pdm-ui-kit 1.2.0 → 1.3.0
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/aspect-ratio/aspect-ratio.component.d.ts +1 -1
- package/aspect-ratio/aspect-ratio.module.d.ts +5 -2
- package/badge/badge.component.d.ts +1 -1
- package/badge/badge.module.d.ts +5 -2
- package/button/button-theme.constant.d.ts +2 -0
- package/button/button.component.d.ts +1 -4
- package/button/testing/button-harness.d.ts +23 -0
- package/checkbox/testing/checkbox-harness.d.ts +22 -0
- package/dialog/dialog.module.d.ts +2 -1
- package/dialog/testing/dialog-harness.d.ts +26 -0
- package/esm2020/alert/alert.component.mjs +3 -3
- package/esm2020/aspect-ratio/aspect-ratio.component.mjs +4 -3
- package/esm2020/aspect-ratio/aspect-ratio.module.mjs +9 -10
- package/esm2020/badge/badge.component.mjs +4 -3
- package/esm2020/badge/badge.module.mjs +9 -10
- package/esm2020/button/button-theme.constant.mjs +55 -0
- package/esm2020/button/button.component.mjs +5 -18
- package/esm2020/button/testing/button-harness.mjs +51 -0
- package/esm2020/checkbox/testing/checkbox-harness.mjs +54 -0
- package/esm2020/dialog/dialog.component.mjs +5 -4
- package/esm2020/dialog/dialog.module.mjs +5 -4
- package/esm2020/dialog/testing/dialog-harness.mjs +87 -0
- package/esm2020/empty/empty.component.mjs +1 -1
- package/esm2020/icon/icon.component.mjs +4 -3
- package/esm2020/icon/icon.module.mjs +9 -10
- package/esm2020/input/input.component.mjs +16 -4
- package/esm2020/input/testing/input-harness.mjs +68 -0
- package/esm2020/kbd/kbd.component.mjs +4 -3
- package/esm2020/kbd/kbd.module.mjs +9 -10
- package/esm2020/pagination/pagination.component.mjs +35 -5
- package/esm2020/pagination/testing/pagination-harness.mjs +76 -0
- package/esm2020/public-api.mjs +3 -1
- package/esm2020/select/testing/select-harness.mjs +75 -0
- package/esm2020/separator/separator.component.mjs +4 -3
- package/esm2020/separator/separator.module.mjs +9 -10
- package/esm2020/skeleton/skeleton.component.mjs +4 -3
- package/esm2020/skeleton/skeleton.module.mjs +9 -10
- package/esm2020/spinner/spinner.component.mjs +4 -3
- package/esm2020/spinner/spinner.module.mjs +9 -10
- package/esm2020/src/alert/alert.component.mjs +3 -3
- package/esm2020/src/aspect-ratio/aspect-ratio.component.mjs +4 -3
- package/esm2020/src/aspect-ratio/aspect-ratio.module.mjs +9 -10
- package/esm2020/src/badge/badge.component.mjs +4 -3
- package/esm2020/src/badge/badge.module.mjs +9 -10
- package/esm2020/src/button/button-theme.constant.mjs +55 -0
- package/esm2020/src/button/button.component.mjs +5 -18
- package/esm2020/src/dialog/dialog.component.mjs +5 -4
- package/esm2020/src/dialog/dialog.module.mjs +5 -4
- package/esm2020/src/empty/empty.component.mjs +1 -1
- package/esm2020/src/icon/icon.component.mjs +4 -3
- package/esm2020/src/icon/icon.module.mjs +9 -10
- package/esm2020/src/input/input.component.mjs +16 -4
- package/esm2020/src/kbd/kbd.component.mjs +4 -3
- package/esm2020/src/kbd/kbd.module.mjs +9 -10
- package/esm2020/src/pagination/pagination.component.mjs +35 -5
- package/esm2020/src/separator/separator.component.mjs +4 -3
- package/esm2020/src/separator/separator.module.mjs +9 -10
- package/esm2020/src/skeleton/skeleton.component.mjs +4 -3
- package/esm2020/src/skeleton/skeleton.module.mjs +9 -10
- package/esm2020/src/spinner/spinner.component.mjs +4 -3
- package/esm2020/src/spinner/spinner.module.mjs +9 -10
- package/esm2020/src/utils/public-api.mjs +2 -1
- package/esm2020/src/utils/validators.mjs +180 -0
- package/esm2020/testing.mjs +13 -0
- package/fesm2015/pdm-ui-kit-src-alert.mjs +2 -2
- package/fesm2015/pdm-ui-kit-src-alert.mjs.map +1 -1
- package/fesm2015/pdm-ui-kit-src-aspect-ratio.mjs +10 -10
- package/fesm2015/pdm-ui-kit-src-aspect-ratio.mjs.map +1 -1
- package/fesm2015/pdm-ui-kit-src-badge.mjs +10 -10
- package/fesm2015/pdm-ui-kit-src-badge.mjs.map +1 -1
- package/fesm2015/pdm-ui-kit-src-button.mjs +58 -17
- package/fesm2015/pdm-ui-kit-src-button.mjs.map +1 -1
- package/fesm2015/pdm-ui-kit-src-dialog.mjs +8 -6
- package/fesm2015/pdm-ui-kit-src-dialog.mjs.map +1 -1
- package/fesm2015/pdm-ui-kit-src-empty.mjs.map +1 -1
- package/fesm2015/pdm-ui-kit-src-icon.mjs +12 -12
- package/fesm2015/pdm-ui-kit-src-icon.mjs.map +1 -1
- package/fesm2015/pdm-ui-kit-src-input.mjs +15 -3
- package/fesm2015/pdm-ui-kit-src-input.mjs.map +1 -1
- package/fesm2015/pdm-ui-kit-src-kbd.mjs +10 -10
- package/fesm2015/pdm-ui-kit-src-kbd.mjs.map +1 -1
- package/fesm2015/pdm-ui-kit-src-pagination.mjs +34 -4
- package/fesm2015/pdm-ui-kit-src-pagination.mjs.map +1 -1
- package/fesm2015/pdm-ui-kit-src-separator.mjs +10 -10
- package/fesm2015/pdm-ui-kit-src-separator.mjs.map +1 -1
- package/fesm2015/pdm-ui-kit-src-skeleton.mjs +10 -10
- package/fesm2015/pdm-ui-kit-src-skeleton.mjs.map +1 -1
- package/fesm2015/pdm-ui-kit-src-spinner.mjs +10 -10
- package/fesm2015/pdm-ui-kit-src-spinner.mjs.map +1 -1
- package/fesm2015/pdm-ui-kit-src-utils.mjs +181 -1
- package/fesm2015/pdm-ui-kit-src-utils.mjs.map +1 -1
- package/fesm2015/pdm-ui-kit.mjs +846 -213
- package/fesm2015/pdm-ui-kit.mjs.map +1 -1
- package/fesm2020/pdm-ui-kit-src-alert.mjs +2 -2
- package/fesm2020/pdm-ui-kit-src-alert.mjs.map +1 -1
- package/fesm2020/pdm-ui-kit-src-aspect-ratio.mjs +10 -10
- package/fesm2020/pdm-ui-kit-src-aspect-ratio.mjs.map +1 -1
- package/fesm2020/pdm-ui-kit-src-badge.mjs +10 -10
- package/fesm2020/pdm-ui-kit-src-badge.mjs.map +1 -1
- package/fesm2020/pdm-ui-kit-src-button.mjs +58 -17
- package/fesm2020/pdm-ui-kit-src-button.mjs.map +1 -1
- package/fesm2020/pdm-ui-kit-src-dialog.mjs +8 -6
- package/fesm2020/pdm-ui-kit-src-dialog.mjs.map +1 -1
- package/fesm2020/pdm-ui-kit-src-empty.mjs.map +1 -1
- package/fesm2020/pdm-ui-kit-src-icon.mjs +12 -12
- package/fesm2020/pdm-ui-kit-src-icon.mjs.map +1 -1
- package/fesm2020/pdm-ui-kit-src-input.mjs +15 -3
- package/fesm2020/pdm-ui-kit-src-input.mjs.map +1 -1
- package/fesm2020/pdm-ui-kit-src-kbd.mjs +10 -10
- package/fesm2020/pdm-ui-kit-src-kbd.mjs.map +1 -1
- package/fesm2020/pdm-ui-kit-src-pagination.mjs +34 -4
- package/fesm2020/pdm-ui-kit-src-pagination.mjs.map +1 -1
- package/fesm2020/pdm-ui-kit-src-separator.mjs +10 -10
- package/fesm2020/pdm-ui-kit-src-separator.mjs.map +1 -1
- package/fesm2020/pdm-ui-kit-src-skeleton.mjs +10 -10
- package/fesm2020/pdm-ui-kit-src-skeleton.mjs.map +1 -1
- package/fesm2020/pdm-ui-kit-src-spinner.mjs +10 -10
- package/fesm2020/pdm-ui-kit-src-spinner.mjs.map +1 -1
- package/fesm2020/pdm-ui-kit-src-utils.mjs +181 -1
- package/fesm2020/pdm-ui-kit-src-utils.mjs.map +1 -1
- package/fesm2020/pdm-ui-kit.mjs +705 -213
- package/fesm2020/pdm-ui-kit.mjs.map +1 -1
- package/icon/icon.component.d.ts +1 -1
- package/icon/icon.module.d.ts +5 -2
- package/input/input.component.d.ts +4 -0
- package/input/testing/input-harness.d.ts +27 -0
- package/kbd/kbd.component.d.ts +1 -1
- package/kbd/kbd.module.d.ts +5 -2
- package/package.json +1 -1
- package/pagination/testing/pagination-harness.d.ts +21 -0
- package/public-api.d.ts +1 -0
- package/select/testing/select-harness.d.ts +25 -0
- package/separator/separator.component.d.ts +1 -1
- package/separator/separator.module.d.ts +5 -2
- package/skeleton/skeleton.component.d.ts +1 -1
- package/skeleton/skeleton.module.d.ts +5 -2
- package/spinner/spinner.component.d.ts +1 -1
- package/spinner/spinner.module.d.ts +5 -2
- package/src/aspect-ratio/aspect-ratio.component.d.ts +1 -1
- package/src/aspect-ratio/aspect-ratio.module.d.ts +5 -2
- package/src/badge/badge.component.d.ts +1 -1
- package/src/badge/badge.module.d.ts +5 -2
- package/src/button/button-theme.constant.d.ts +2 -0
- package/src/button/button.component.d.ts +1 -4
- package/src/dialog/dialog.module.d.ts +2 -1
- package/src/icon/icon.component.d.ts +1 -1
- package/src/icon/icon.module.d.ts +5 -2
- package/src/input/input.component.d.ts +4 -0
- package/src/kbd/kbd.component.d.ts +1 -1
- package/src/kbd/kbd.module.d.ts +5 -2
- package/src/separator/separator.component.d.ts +1 -1
- package/src/separator/separator.module.d.ts +5 -2
- package/src/skeleton/skeleton.component.d.ts +1 -1
- package/src/skeleton/skeleton.module.d.ts +5 -2
- package/src/spinner/spinner.component.d.ts +1 -1
- package/src/spinner/spinner.module.d.ts +5 -2
- package/src/utils/public-api.d.ts +1 -0
- package/src/utils/validators.d.ts +109 -0
- package/testing.d.ts +12 -0
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Form validation utilities for PDM UI Kit
|
|
3
|
+
*
|
|
4
|
+
* Pure validation functions and patterns that work with any form validation library.
|
|
5
|
+
* These functions validate values directly and return true/false, making them framework-agnostic.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Validate email format
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* isValidEmail('user@example.com') // true
|
|
12
|
+
*/
|
|
13
|
+
export function isValidEmail(value) {
|
|
14
|
+
if (!value)
|
|
15
|
+
return false;
|
|
16
|
+
const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
|
|
17
|
+
return emailRegex.test(value);
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Validate URL format
|
|
21
|
+
*
|
|
22
|
+
* @example
|
|
23
|
+
* isValidUrl('https://example.com') // true
|
|
24
|
+
*/
|
|
25
|
+
export function isValidUrl(value) {
|
|
26
|
+
if (!value)
|
|
27
|
+
return false;
|
|
28
|
+
try {
|
|
29
|
+
new URL(value);
|
|
30
|
+
return true;
|
|
31
|
+
}
|
|
32
|
+
catch {
|
|
33
|
+
return false;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Validate minimum length
|
|
38
|
+
*
|
|
39
|
+
* @example
|
|
40
|
+
* hasMinLength('password', 8) // true if length >= 8
|
|
41
|
+
*/
|
|
42
|
+
export function hasMinLength(value, min) {
|
|
43
|
+
if (!value)
|
|
44
|
+
return false;
|
|
45
|
+
return String(value).length >= min;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Validate maximum length
|
|
49
|
+
*
|
|
50
|
+
* @example
|
|
51
|
+
* hasMaxLength('bio', 500) // true if length <= 500
|
|
52
|
+
*/
|
|
53
|
+
export function hasMaxLength(value, max) {
|
|
54
|
+
if (!value)
|
|
55
|
+
return true;
|
|
56
|
+
return String(value).length <= max;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Validate that value only contains numbers
|
|
60
|
+
*
|
|
61
|
+
* @example
|
|
62
|
+
* isNumeric('12345') // true
|
|
63
|
+
*/
|
|
64
|
+
export function isNumeric(value) {
|
|
65
|
+
if (!value)
|
|
66
|
+
return false;
|
|
67
|
+
return /^\d+$/.test(String(value));
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Validate that two values match (e.g., password confirmation)
|
|
71
|
+
*
|
|
72
|
+
* @example
|
|
73
|
+
* valuesMatch(password, confirmPassword) // true if they match
|
|
74
|
+
*/
|
|
75
|
+
export function valuesMatch(value1, value2) {
|
|
76
|
+
if (!value1 || !value2)
|
|
77
|
+
return false;
|
|
78
|
+
return value1 === value2;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Validate minimum value
|
|
82
|
+
*
|
|
83
|
+
* @example
|
|
84
|
+
* isMinValue(age, 18) // true if age >= 18
|
|
85
|
+
*/
|
|
86
|
+
export function isMinValue(value, min) {
|
|
87
|
+
if (value === null || value === undefined)
|
|
88
|
+
return false;
|
|
89
|
+
return value >= min;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Validate maximum value
|
|
93
|
+
*
|
|
94
|
+
* @example
|
|
95
|
+
* isMaxValue(percentage, 100) // true if percentage <= 100
|
|
96
|
+
*/
|
|
97
|
+
export function isMaxValue(value, max) {
|
|
98
|
+
if (value === null || value === undefined)
|
|
99
|
+
return false;
|
|
100
|
+
return value <= max;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Validate phone number format (basic international format)
|
|
104
|
+
* Accepts: +1234567890, (123) 456-7890, 123-456-7890
|
|
105
|
+
*
|
|
106
|
+
* @example
|
|
107
|
+
* isValidPhone('+1234567890') // true
|
|
108
|
+
*/
|
|
109
|
+
export function isValidPhone(value) {
|
|
110
|
+
if (!value)
|
|
111
|
+
return false;
|
|
112
|
+
const phoneRegex = /^[\+]?[(]?[0-9]{3}[)]?[-\s\.]?[0-9]{3}[-\s\.]?[0-9]{4,6}$/;
|
|
113
|
+
return phoneRegex.test(String(value).replace(/\s/g, ''));
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Check if value contains at least one uppercase letter
|
|
117
|
+
*
|
|
118
|
+
* @example
|
|
119
|
+
* hasUppercase('Password') // true
|
|
120
|
+
*/
|
|
121
|
+
export function hasUppercase(value) {
|
|
122
|
+
if (!value)
|
|
123
|
+
return false;
|
|
124
|
+
return /[A-Z]/.test(value);
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Check if value contains at least one lowercase letter
|
|
128
|
+
*
|
|
129
|
+
* @example
|
|
130
|
+
* hasLowercase('Password') // true
|
|
131
|
+
*/
|
|
132
|
+
export function hasLowercase(value) {
|
|
133
|
+
if (!value)
|
|
134
|
+
return false;
|
|
135
|
+
return /[a-z]/.test(value);
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Check if value contains at least one number
|
|
139
|
+
*
|
|
140
|
+
* @example
|
|
141
|
+
* hasNumber('Pass123') // true
|
|
142
|
+
*/
|
|
143
|
+
export function hasNumber(value) {
|
|
144
|
+
if (!value)
|
|
145
|
+
return false;
|
|
146
|
+
return /\d/.test(value);
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Check if value contains at least one special character
|
|
150
|
+
*
|
|
151
|
+
* @example
|
|
152
|
+
* hasSpecialChar('Pass@123') // true
|
|
153
|
+
*/
|
|
154
|
+
export function hasSpecialChar(value) {
|
|
155
|
+
if (!value)
|
|
156
|
+
return false;
|
|
157
|
+
return /[!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?]/.test(value);
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Get user-friendly error message for validation failures
|
|
161
|
+
*
|
|
162
|
+
* @example
|
|
163
|
+
* getErrorMessage('invalidEmail') // "Please enter a valid email address"
|
|
164
|
+
*/
|
|
165
|
+
export function getErrorMessage(errorCode, fieldName = 'Field') {
|
|
166
|
+
const messages = {
|
|
167
|
+
required: `${fieldName} is required`,
|
|
168
|
+
invalidEmail: 'Please enter a valid email address',
|
|
169
|
+
invalidUrl: 'Please enter a valid URL',
|
|
170
|
+
invalidPhone: 'Please enter a valid phone number',
|
|
171
|
+
notNumeric: `${fieldName} must contain only numbers`,
|
|
172
|
+
noUppercase: `${fieldName} must contain at least one uppercase letter`,
|
|
173
|
+
noLowercase: `${fieldName} must contain at least one lowercase letter`,
|
|
174
|
+
noNumber: `${fieldName} must contain at least one number`,
|
|
175
|
+
noSpecialChar: `${fieldName} must contain at least one special character`,
|
|
176
|
+
fieldsDoNotMatch: 'Fields do not match',
|
|
177
|
+
};
|
|
178
|
+
return messages[errorCode] || 'Invalid input';
|
|
179
|
+
}
|
|
180
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy91dGlscy92YWxpZGF0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7OztHQUtHO0FBT0g7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsWUFBWSxDQUFDLEtBQWE7SUFDeEMsSUFBSSxDQUFDLEtBQUs7UUFBRSxPQUFPLEtBQUssQ0FBQztJQUN6QixNQUFNLFVBQVUsR0FBRyw0QkFBNEIsQ0FBQztJQUNoRCxPQUFPLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDaEMsQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLFVBQVUsQ0FBQyxLQUFhO0lBQ3RDLElBQUksQ0FBQyxLQUFLO1FBQUUsT0FBTyxLQUFLLENBQUM7SUFDekIsSUFBSTtRQUNGLElBQUksR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2YsT0FBTyxJQUFJLENBQUM7S0FDYjtJQUFDLE1BQU07UUFDTixPQUFPLEtBQUssQ0FBQztLQUNkO0FBQ0gsQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLFlBQVksQ0FBQyxLQUFhLEVBQUUsR0FBVztJQUNyRCxJQUFJLENBQUMsS0FBSztRQUFFLE9BQU8sS0FBSyxDQUFDO0lBQ3pCLE9BQU8sTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sSUFBSSxHQUFHLENBQUM7QUFDckMsQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLFlBQVksQ0FBQyxLQUFhLEVBQUUsR0FBVztJQUNyRCxJQUFJLENBQUMsS0FBSztRQUFFLE9BQU8sSUFBSSxDQUFDO0lBQ3hCLE9BQU8sTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sSUFBSSxHQUFHLENBQUM7QUFDckMsQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLFNBQVMsQ0FBQyxLQUFhO0lBQ3JDLElBQUksQ0FB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QUFDaEQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogRm9ybSB2YWxpZGF0aW9uIHV0aWxpdGllcyBmb3IgUERNIFVJIEtpdFxuICpcbiAqIFB1cmUgdmFsaWRhdGlvbiBmdW5jdGlvbnMgYW5kIHBhdHRlcm5zIHRoYXQgd29yayB3aXRoIGFueSBmb3JtIHZhbGlkYXRpb24gbGlicmFyeS5cbiAqIFRoZXNlIGZ1bmN0aW9ucyB2YWxpZGF0ZSB2YWx1ZXMgZGlyZWN0bHkgYW5kIHJldHVybiB0cnVlL2ZhbHNlLCBtYWtpbmcgdGhlbSBmcmFtZXdvcmstYWdub3N0aWMuXG4gKi9cblxuZXhwb3J0IGludGVyZmFjZSBQZG1WYWxpZGF0aW9uRXJyb3Ige1xuICBtZXNzYWdlOiBzdHJpbmc7XG4gIGNvZGU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBWYWxpZGF0ZSBlbWFpbCBmb3JtYXRcbiAqXG4gKiBAZXhhbXBsZVxuICogaXNWYWxpZEVtYWlsKCd1c2VyQGV4YW1wbGUuY29tJykgLy8gdHJ1ZVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZEVtYWlsKHZhbHVlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgaWYgKCF2YWx1ZSkgcmV0dXJuIGZhbHNlO1xuICBjb25zdCBlbWFpbFJlZ2V4ID0gL15bXlxcc0BdK0BbXlxcc0BdK1xcLlteXFxzQF0rJC87XG4gIHJldHVybiBlbWFpbFJlZ2V4LnRlc3QodmFsdWUpO1xufVxuXG4vKipcbiAqIFZhbGlkYXRlIFVSTCBmb3JtYXRcbiAqXG4gKiBAZXhhbXBsZVxuICogaXNWYWxpZFVybCgnaHR0cHM6Ly9leGFtcGxlLmNvbScpIC8vIHRydWVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRVcmwodmFsdWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBpZiAoIXZhbHVlKSByZXR1cm4gZmFsc2U7XG4gIHRyeSB7XG4gICAgbmV3IFVSTCh2YWx1ZSk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG4vKipcbiAqIFZhbGlkYXRlIG1pbmltdW0gbGVuZ3RoXG4gKlxuICogQGV4YW1wbGVcbiAqIGhhc01pbkxlbmd0aCgncGFzc3dvcmQnLCA4KSAvLyB0cnVlIGlmIGxlbmd0aCA+PSA4XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBoYXNNaW5MZW5ndGgodmFsdWU6IHN0cmluZywgbWluOiBudW1iZXIpOiBib29sZWFuIHtcbiAgaWYgKCF2YWx1ZSkgcmV0dXJuIGZhbHNlO1xuICByZXR1cm4gU3RyaW5nKHZhbHVlKS5sZW5ndGggPj0gbWluO1xufVxuXG4vKipcbiAqIFZhbGlkYXRlIG1heGltdW0gbGVuZ3RoXG4gKlxuICogQGV4YW1wbGVcbiAqIGhhc01heExlbmd0aCgnYmlvJywgNTAwKSAvLyB0cnVlIGlmIGxlbmd0aCA8PSA1MDBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGhhc01heExlbmd0aCh2YWx1ZTogc3RyaW5nLCBtYXg6IG51bWJlcik6IGJvb2xlYW4ge1xuICBpZiAoIXZhbHVlKSByZXR1cm4gdHJ1ZTtcbiAgcmV0dXJuIFN0cmluZyh2YWx1ZSkubGVuZ3RoIDw9IG1heDtcbn1cblxuLyoqXG4gKiBWYWxpZGF0ZSB0aGF0IHZhbHVlIG9ubHkgY29udGFpbnMgbnVtYmVyc1xuICpcbiAqIEBleGFtcGxlXG4gKiBpc051bWVyaWMoJzEyMzQ1JykgLy8gdHJ1ZVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNOdW1lcmljKHZhbHVlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgaWYgKCF2YWx1ZSkgcmV0dXJuIGZhbHNlO1xuICByZXR1cm4gL15cXGQrJC8udGVzdChTdHJpbmcodmFsdWUpKTtcbn1cblxuLyoqXG4gKiBWYWxpZGF0ZSB0aGF0IHR3byB2YWx1ZXMgbWF0Y2ggKGUuZy4sIHBhc3N3b3JkIGNvbmZpcm1hdGlvbilcbiAqXG4gKiBAZXhhbXBsZVxuICogdmFsdWVzTWF0Y2gocGFzc3dvcmQsIGNvbmZpcm1QYXNzd29yZCkgLy8gdHJ1ZSBpZiB0aGV5IG1hdGNoXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWx1ZXNNYXRjaCh2YWx1ZTE6IHN0cmluZywgdmFsdWUyOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgaWYgKCF2YWx1ZTEgfHwgIXZhbHVlMikgcmV0dXJuIGZhbHNlO1xuICByZXR1cm4gdmFsdWUxID09PSB2YWx1ZTI7XG59XG5cbi8qKlxuICogVmFsaWRhdGUgbWluaW11bSB2YWx1ZVxuICpcbiAqIEBleGFtcGxlXG4gKiBpc01pblZhbHVlKGFnZSwgMTgpIC8vIHRydWUgaWYgYWdlID49IDE4XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc01pblZhbHVlKHZhbHVlOiBudW1iZXIsIG1pbjogbnVtYmVyKTogYm9vbGVhbiB7XG4gIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkKSByZXR1cm4gZmFsc2U7XG4gIHJldHVybiB2YWx1ZSA+PSBtaW47XG59XG5cbi8qKlxuICogVmFsaWRhdGUgbWF4aW11bSB2YWx1ZVxuICpcbiAqIEBleGFtcGxlXG4gKiBpc01heFZhbHVlKHBlcmNlbnRhZ2UsIDEwMCkgLy8gdHJ1ZSBpZiBwZXJjZW50YWdlIDw9IDEwMFxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNNYXhWYWx1ZSh2YWx1ZTogbnVtYmVyLCBtYXg6IG51bWJlcik6IGJvb2xlYW4ge1xuICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCkgcmV0dXJuIGZhbHNlO1xuICByZXR1cm4gdmFsdWUgPD0gbWF4O1xufVxuXG4vKipcbiAqIFZhbGlkYXRlIHBob25lIG51bWJlciBmb3JtYXQgKGJhc2ljIGludGVybmF0aW9uYWwgZm9ybWF0KVxuICogQWNjZXB0czogKzEyMzQ1Njc4OTAsICgxMjMpIDQ1Ni03ODkwLCAxMjMtNDU2LTc4OTBcbiAqXG4gKiBAZXhhbXBsZVxuICogaXNWYWxpZFBob25lKCcrMTIzNDU2Nzg5MCcpIC8vIHRydWVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRQaG9uZSh2YWx1ZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGlmICghdmFsdWUpIHJldHVybiBmYWxzZTtcbiAgY29uc3QgcGhvbmVSZWdleCA9IC9eW1xcK10/WyhdP1swLTldezN9WyldP1stXFxzXFwuXT9bMC05XXszfVstXFxzXFwuXT9bMC05XXs0LDZ9JC87XG4gIHJldHVybiBwaG9uZVJlZ2V4LnRlc3QoU3RyaW5nKHZhbHVlKS5yZXBsYWNlKC9cXHMvZywgJycpKTtcbn1cblxuLyoqXG4gKiBDaGVjayBpZiB2YWx1ZSBjb250YWlucyBhdCBsZWFzdCBvbmUgdXBwZXJjYXNlIGxldHRlclxuICpcbiAqIEBleGFtcGxlXG4gKiBoYXNVcHBlcmNhc2UoJ1Bhc3N3b3JkJykgLy8gdHJ1ZVxuICovXG5leHBvcnQgZnVuY3Rpb24gaGFzVXBwZXJjYXNlKHZhbHVlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgaWYgKCF2YWx1ZSkgcmV0dXJuIGZhbHNlO1xuICByZXR1cm4gL1tBLVpdLy50ZXN0KHZhbHVlKTtcbn1cblxuLyoqXG4gKiBDaGVjayBpZiB2YWx1ZSBjb250YWlucyBhdCBsZWFzdCBvbmUgbG93ZXJjYXNlIGxldHRlclxuICpcbiAqIEBleGFtcGxlXG4gKiBoYXNMb3dlcmNhc2UoJ1Bhc3N3b3JkJykgLy8gdHJ1ZVxuICovXG5leHBvcnQgZnVuY3Rpb24gaGFzTG93ZXJjYXNlKHZhbHVlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgaWYgKCF2YWx1ZSkgcmV0dXJuIGZhbHNlO1xuICByZXR1cm4gL1thLXpdLy50ZXN0KHZhbHVlKTtcbn1cblxuLyoqXG4gKiBDaGVjayBpZiB2YWx1ZSBjb250YWlucyBhdCBsZWFzdCBvbmUgbnVtYmVyXG4gKlxuICogQGV4YW1wbGVcbiAqIGhhc051bWJlcignUGFzczEyMycpIC8vIHRydWVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGhhc051bWJlcih2YWx1ZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGlmICghdmFsdWUpIHJldHVybiBmYWxzZTtcbiAgcmV0dXJuIC9cXGQvLnRlc3QodmFsdWUpO1xufVxuXG4vKipcbiAqIENoZWNrIGlmIHZhbHVlIGNvbnRhaW5zIGF0IGxlYXN0IG9uZSBzcGVjaWFsIGNoYXJhY3RlclxuICpcbiAqIEBleGFtcGxlXG4gKiBoYXNTcGVjaWFsQ2hhcignUGFzc0AxMjMnKSAvLyB0cnVlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBoYXNTcGVjaWFsQ2hhcih2YWx1ZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGlmICghdmFsdWUpIHJldHVybiBmYWxzZTtcbiAgcmV0dXJuIC9bIUAjJCVeJiooKV8rXFwtPVxcW1xcXXt9Oyc6XCJcXFxcfCwuPD5cXC8/XS8udGVzdCh2YWx1ZSk7XG59XG5cbi8qKlxuICogR2V0IHVzZXItZnJpZW5kbHkgZXJyb3IgbWVzc2FnZSBmb3IgdmFsaWRhdGlvbiBmYWlsdXJlc1xuICpcbiAqIEBleGFtcGxlXG4gKiBnZXRFcnJvck1lc3NhZ2UoJ2ludmFsaWRFbWFpbCcpIC8vIFwiUGxlYXNlIGVudGVyIGEgdmFsaWQgZW1haWwgYWRkcmVzc1wiXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRFcnJvck1lc3NhZ2UoZXJyb3JDb2RlOiBzdHJpbmcsIGZpZWxkTmFtZTogc3RyaW5nID0gJ0ZpZWxkJyk6IHN0cmluZyB7XG4gIGNvbnN0IG1lc3NhZ2VzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgIHJlcXVpcmVkOiBgJHtmaWVsZE5hbWV9IGlzIHJlcXVpcmVkYCxcbiAgICBpbnZhbGlkRW1haWw6ICdQbGVhc2UgZW50ZXIgYSB2YWxpZCBlbWFpbCBhZGRyZXNzJyxcbiAgICBpbnZhbGlkVXJsOiAnUGxlYXNlIGVudGVyIGEgdmFsaWQgVVJMJyxcbiAgICBpbnZhbGlkUGhvbmU6ICdQbGVhc2UgZW50ZXIgYSB2YWxpZCBwaG9uZSBudW1iZXInLFxuICAgIG5vdE51bWVyaWM6IGAke2ZpZWxkTmFtZX0gbXVzdCBjb250YWluIG9ubHkgbnVtYmVyc2AsXG4gICAgbm9VcHBlcmNhc2U6IGAke2ZpZWxkTmFtZX0gbXVzdCBjb250YWluIGF0IGxlYXN0IG9uZSB1cHBlcmNhc2UgbGV0dGVyYCxcbiAgICBub0xvd2VyY2FzZTogYCR7ZmllbGROYW1lfSBtdXN0IGNvbnRhaW4gYXQgbGVhc3Qgb25lIGxvd2VyY2FzZSBsZXR0ZXJgLFxuICAgIG5vTnVtYmVyOiBgJHtmaWVsZE5hbWV9IG11c3QgY29udGFpbiBhdCBsZWFzdCBvbmUgbnVtYmVyYCxcbiAgICBub1NwZWNpYWxDaGFyOiBgJHtmaWVsZE5hbWV9IG11c3QgY29udGFpbiBhdCBsZWFzdCBvbmUgc3BlY2lhbCBjaGFyYWN0ZXJgLFxuICAgIGZpZWxkc0RvTm90TWF0Y2g6ICdGaWVsZHMgZG8gbm90IG1hdGNoJyxcbiAgfTtcblxuICByZXR1cm4gbWVzc2FnZXNbZXJyb3JDb2RlXSB8fCAnSW52YWxpZCBpbnB1dCc7XG59XG4iXX0=
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Public API for CDK test harnesses
|
|
3
|
+
*
|
|
4
|
+
* Usage:
|
|
5
|
+
* import { PdmInputHarness, PdmButtonHarness } from 'pdm-ui-kit/testing';
|
|
6
|
+
*/
|
|
7
|
+
export { PdmInputHarness } from './input/testing/input-harness';
|
|
8
|
+
export { PdmButtonHarness } from './button/testing/button-harness';
|
|
9
|
+
export { PdmDialogHarness } from './dialog/testing/dialog-harness';
|
|
10
|
+
export { PdmSelectHarness } from './select/testing/select-harness';
|
|
11
|
+
export { PdmCheckboxHarness } from './checkbox/testing/checkbox-harness';
|
|
12
|
+
export { PdmPaginationHarness } from './pagination/testing/pagination-harness';
|
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90ZXN0aW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7OztHQUtHO0FBRUgsT0FBTyxFQUFFLGVBQWUsRUFBK0IsTUFBTSwrQkFBK0IsQ0FBQztBQUM3RixPQUFPLEVBQUUsZ0JBQWdCLEVBQWdDLE1BQU0saUNBQWlDLENBQUM7QUFDakcsT0FBTyxFQUFFLGdCQUFnQixFQUFnQyxNQUFNLGlDQUFpQyxDQUFDO0FBQ2pHLE9BQU8sRUFBRSxnQkFBZ0IsRUFBZ0MsTUFBTSxpQ0FBaUMsQ0FBQztBQUNqRyxPQUFPLEVBQUUsa0JBQWtCLEVBQWtDLE1BQU0scUNBQXFDLENBQUM7QUFDekcsT0FBTyxFQUFFLG9CQUFvQixFQUFvQyxNQUFNLHlDQUF5QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBQdWJsaWMgQVBJIGZvciBDREsgdGVzdCBoYXJuZXNzZXNcbiAqXG4gKiBVc2FnZTpcbiAqIGltcG9ydCB7IFBkbUlucHV0SGFybmVzcywgUGRtQnV0dG9uSGFybmVzcyB9IGZyb20gJ3BkbS11aS1raXQvdGVzdGluZyc7XG4gKi9cblxuZXhwb3J0IHsgUGRtSW5wdXRIYXJuZXNzLCB0eXBlIFBkbUlucHV0SGFybmVzc0ZpbHRlcnMgfSBmcm9tICcuL2lucHV0L3Rlc3RpbmcvaW5wdXQtaGFybmVzcyc7XG5leHBvcnQgeyBQZG1CdXR0b25IYXJuZXNzLCB0eXBlIFBkbUJ1dHRvbkhhcm5lc3NGaWx0ZXJzIH0gZnJvbSAnLi9idXR0b24vdGVzdGluZy9idXR0b24taGFybmVzcyc7XG5leHBvcnQgeyBQZG1EaWFsb2dIYXJuZXNzLCB0eXBlIFBkbURpYWxvZ0hhcm5lc3NGaWx0ZXJzIH0gZnJvbSAnLi9kaWFsb2cvdGVzdGluZy9kaWFsb2ctaGFybmVzcyc7XG5leHBvcnQgeyBQZG1TZWxlY3RIYXJuZXNzLCB0eXBlIFBkbVNlbGVjdEhhcm5lc3NGaWx0ZXJzIH0gZnJvbSAnLi9zZWxlY3QvdGVzdGluZy9zZWxlY3QtaGFybmVzcyc7XG5leHBvcnQgeyBQZG1DaGVja2JveEhhcm5lc3MsIHR5cGUgUGRtQ2hlY2tib3hIYXJuZXNzRmlsdGVycyB9IGZyb20gJy4vY2hlY2tib3gvdGVzdGluZy9jaGVja2JveC1oYXJuZXNzJztcbmV4cG9ydCB7IFBkbVBhZ2luYXRpb25IYXJuZXNzLCB0eXBlIFBkbVBhZ2luYXRpb25IYXJuZXNzRmlsdGVycyB9IGZyb20gJy4vcGFnaW5hdGlvbi90ZXN0aW5nL3BhZ2luYXRpb24taGFybmVzcyc7XG4iXX0=
|
|
@@ -19,10 +19,10 @@ class PdmAlertComponent {
|
|
|
19
19
|
}
|
|
20
20
|
}
|
|
21
21
|
PdmAlertComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmAlertComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
22
|
-
PdmAlertComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: PdmAlertComponent, selector: "pdm-alert", inputs: { variant: "variant", title: "title", description: "description", details: "details", className: "className" }, ngImport: i0, template: "<section\n role=\"alert\"\n [ngClass]=\"[\n 'w-full rounded-lg border border-solid border-border bg-background p-4',\n className\n ]\"\n>\n <div [ngClass]=\"['flex gap-3', isDestructive ? 'items-start' : 'items-center']\">\n <span class=\"inline-flex h-6 w-6 shrink-0 items-center justify-center\">\n <svg *ngIf=\"!isDestructive && !isTitleOnly\" viewBox=\"0 0 24 24\" class=\"h-5 w-5 text-foreground\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <circle cx=\"12\" cy=\"12\" r=\"9\" stroke=\"currentColor\" stroke-width=\"1.5\"></circle>\n <path d=\"M8.5 12.5L10.8 14.8L15.8 9.8\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </svg>\n <svg *ngIf=\"isTitleOnly\" viewBox=\"0 0 24 24\" class=\"h-5 w-5 text-foreground\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M5 8H19\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"></path>\n <path d=\"M9 8V6.5C9 5.67 9.67 5 10.5 5H13.5C14.33 5 15 5.67 15 6.5V8\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"></path>\n <path d=\"M7 8L8 18.5C8.07 19.33 8.77 20 9.6 20H14.4C15.23 20 15.93 19.33 16 18.5L17 8\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"></path>\n </svg>\n <svg *ngIf=\"isDestructive\" viewBox=\"0 0 24 24\" class=\"h-5 w-5 text-destructive\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <circle cx=\"12\" cy=\"12\" r=\"9\" stroke=\"currentColor\" stroke-width=\"1.5\"></circle>\n <path d=\"M12 8V12\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"></path>\n <circle cx=\"12\" cy=\"16\" r=\"1\" fill=\"currentColor\"></circle>\n </svg>\n </span>\n\n <div class=\"min-w-0 flex-1\">\n <h4\n [ngClass]=\"[\n 'm-0 text-sm font-medium',\n isDestructive ? 'text-destructive' : 'text-foreground'\n ]\"\n >\n {{ title }}\n </h4>\n\n <p\n *ngIf=\"!isTitleOnly && description\"\n [ngClass]=\"[\n 'm-0 mt-0.5 text-sm',\n isDestructive ? 'text-destructive' : 'text-muted-foreground'\n ]\"\n >\n {{ description }}\n </p>\n\n <ul *ngIf=\"isDestructive && details.length\" class=\"m-0 mt-1 pl-5 text-sm text-destructive\">\n <li *ngFor=\"let item of details\">{{ item }}</li>\n </ul>\n </div>\n </div>\n</section>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
22
|
+
PdmAlertComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: PdmAlertComponent, selector: "pdm-alert", inputs: { variant: "variant", title: "title", description: "description", details: "details", className: "className" }, ngImport: i0, template: "<section\n role=\"alert\"\n [ngClass]=\"[\n 'w-full rounded-lg border border-solid border-border bg-background p-4',\n className\n ]\"\n>\n <div [ngClass]=\"['flex gap-3', isDestructive ? 'items-start' : 'items-center']\">\n <span class=\"inline-flex h-6 w-6 shrink-0 items-center justify-center\">\n <svg *ngIf=\"!isDestructive && !isTitleOnly\" aria-label=\"Success\" viewBox=\"0 0 24 24\" class=\"h-5 w-5 text-foreground\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <circle cx=\"12\" cy=\"12\" r=\"9\" stroke=\"currentColor\" stroke-width=\"1.5\"></circle>\n <path d=\"M8.5 12.5L10.8 14.8L15.8 9.8\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </svg>\n <svg *ngIf=\"isTitleOnly\" aria-label=\"Info\" viewBox=\"0 0 24 24\" class=\"h-5 w-5 text-foreground\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M5 8H19\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"></path>\n <path d=\"M9 8V6.5C9 5.67 9.67 5 10.5 5H13.5C14.33 5 15 5.67 15 6.5V8\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"></path>\n <path d=\"M7 8L8 18.5C8.07 19.33 8.77 20 9.6 20H14.4C15.23 20 15.93 19.33 16 18.5L17 8\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"></path>\n </svg>\n <svg *ngIf=\"isDestructive\" aria-label=\"Error\" viewBox=\"0 0 24 24\" class=\"h-5 w-5 text-destructive\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <circle cx=\"12\" cy=\"12\" r=\"9\" stroke=\"currentColor\" stroke-width=\"1.5\"></circle>\n <path d=\"M12 8V12\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"></path>\n <circle cx=\"12\" cy=\"16\" r=\"1\" fill=\"currentColor\"></circle>\n </svg>\n </span>\n\n <div class=\"min-w-0 flex-1\">\n <h4\n [ngClass]=\"[\n 'm-0 text-sm font-medium',\n isDestructive ? 'text-destructive' : 'text-foreground'\n ]\"\n >\n {{ title }}\n </h4>\n\n <p\n *ngIf=\"!isTitleOnly && description\"\n [ngClass]=\"[\n 'm-0 mt-0.5 text-sm',\n isDestructive ? 'text-destructive' : 'text-muted-foreground'\n ]\"\n >\n {{ description }}\n </p>\n\n <ul *ngIf=\"isDestructive && details.length\" class=\"m-0 mt-1 pl-5 text-sm text-destructive\">\n <li *ngFor=\"let item of details\">{{ item }}</li>\n </ul>\n </div>\n </div>\n</section>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
23
23
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmAlertComponent, decorators: [{
|
|
24
24
|
type: Component,
|
|
25
|
-
args: [{ selector: 'pdm-alert', changeDetection: ChangeDetectionStrategy.OnPush, template: "<section\n role=\"alert\"\n [ngClass]=\"[\n 'w-full rounded-lg border border-solid border-border bg-background p-4',\n className\n ]\"\n>\n <div [ngClass]=\"['flex gap-3', isDestructive ? 'items-start' : 'items-center']\">\n <span class=\"inline-flex h-6 w-6 shrink-0 items-center justify-center\">\n <svg *ngIf=\"!isDestructive && !isTitleOnly\" viewBox=\"0 0 24 24\" class=\"h-5 w-5 text-foreground\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <circle cx=\"12\" cy=\"12\" r=\"9\" stroke=\"currentColor\" stroke-width=\"1.5\"></circle>\n <path d=\"M8.5 12.5L10.8 14.8L15.8 9.8\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </svg>\n <svg *ngIf=\"isTitleOnly\" viewBox=\"0 0 24 24\" class=\"h-5 w-5 text-foreground\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M5 8H19\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"></path>\n <path d=\"M9 8V6.5C9 5.67 9.67 5 10.5 5H13.5C14.33 5 15 5.67 15 6.5V8\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"></path>\n <path d=\"M7 8L8 18.5C8.07 19.33 8.77 20 9.6 20H14.4C15.23 20 15.93 19.33 16 18.5L17 8\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"></path>\n </svg>\n <svg *ngIf=\"isDestructive\" viewBox=\"0 0 24 24\" class=\"h-5 w-5 text-destructive\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <circle cx=\"12\" cy=\"12\" r=\"9\" stroke=\"currentColor\" stroke-width=\"1.5\"></circle>\n <path d=\"M12 8V12\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"></path>\n <circle cx=\"12\" cy=\"16\" r=\"1\" fill=\"currentColor\"></circle>\n </svg>\n </span>\n\n <div class=\"min-w-0 flex-1\">\n <h4\n [ngClass]=\"[\n 'm-0 text-sm font-medium',\n isDestructive ? 'text-destructive' : 'text-foreground'\n ]\"\n >\n {{ title }}\n </h4>\n\n <p\n *ngIf=\"!isTitleOnly && description\"\n [ngClass]=\"[\n 'm-0 mt-0.5 text-sm',\n isDestructive ? 'text-destructive' : 'text-muted-foreground'\n ]\"\n >\n {{ description }}\n </p>\n\n <ul *ngIf=\"isDestructive && details.length\" class=\"m-0 mt-1 pl-5 text-sm text-destructive\">\n <li *ngFor=\"let item of details\">{{ item }}</li>\n </ul>\n </div>\n </div>\n</section>\n" }]
|
|
25
|
+
args: [{ selector: 'pdm-alert', changeDetection: ChangeDetectionStrategy.OnPush, template: "<section\n role=\"alert\"\n [ngClass]=\"[\n 'w-full rounded-lg border border-solid border-border bg-background p-4',\n className\n ]\"\n>\n <div [ngClass]=\"['flex gap-3', isDestructive ? 'items-start' : 'items-center']\">\n <span class=\"inline-flex h-6 w-6 shrink-0 items-center justify-center\">\n <svg *ngIf=\"!isDestructive && !isTitleOnly\" aria-label=\"Success\" viewBox=\"0 0 24 24\" class=\"h-5 w-5 text-foreground\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <circle cx=\"12\" cy=\"12\" r=\"9\" stroke=\"currentColor\" stroke-width=\"1.5\"></circle>\n <path d=\"M8.5 12.5L10.8 14.8L15.8 9.8\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </svg>\n <svg *ngIf=\"isTitleOnly\" aria-label=\"Info\" viewBox=\"0 0 24 24\" class=\"h-5 w-5 text-foreground\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M5 8H19\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"></path>\n <path d=\"M9 8V6.5C9 5.67 9.67 5 10.5 5H13.5C14.33 5 15 5.67 15 6.5V8\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"></path>\n <path d=\"M7 8L8 18.5C8.07 19.33 8.77 20 9.6 20H14.4C15.23 20 15.93 19.33 16 18.5L17 8\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"></path>\n </svg>\n <svg *ngIf=\"isDestructive\" aria-label=\"Error\" viewBox=\"0 0 24 24\" class=\"h-5 w-5 text-destructive\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <circle cx=\"12\" cy=\"12\" r=\"9\" stroke=\"currentColor\" stroke-width=\"1.5\"></circle>\n <path d=\"M12 8V12\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"></path>\n <circle cx=\"12\" cy=\"16\" r=\"1\" fill=\"currentColor\"></circle>\n </svg>\n </span>\n\n <div class=\"min-w-0 flex-1\">\n <h4\n [ngClass]=\"[\n 'm-0 text-sm font-medium',\n isDestructive ? 'text-destructive' : 'text-foreground'\n ]\"\n >\n {{ title }}\n </h4>\n\n <p\n *ngIf=\"!isTitleOnly && description\"\n [ngClass]=\"[\n 'm-0 mt-0.5 text-sm',\n isDestructive ? 'text-destructive' : 'text-muted-foreground'\n ]\"\n >\n {{ description }}\n </p>\n\n <ul *ngIf=\"isDestructive && details.length\" class=\"m-0 mt-1 pl-5 text-sm text-destructive\">\n <li *ngFor=\"let item of details\">{{ item }}</li>\n </ul>\n </div>\n </div>\n</section>\n" }]
|
|
26
26
|
}], propDecorators: { variant: [{
|
|
27
27
|
type: Input
|
|
28
28
|
}], title: [{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pdm-ui-kit-src-alert.mjs","sources":["../../../src/alert/alert.component.ts","../../../src/alert/alert.component.html","../../../src/alert/alert-dialog.component.ts","../../../src/alert/alert-dialog.component.html","../../../src/alert/alert.module.ts","../../../src/alert/pdm-ui-kit-src-alert.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\nexport type PdmAlertVariant = 'default' | 'title-only' | 'destructive';\n\n@Component({\n selector: 'pdm-alert',\n templateUrl: './alert.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PdmAlertComponent {\n @Input() variant: PdmAlertVariant = 'default';\n @Input() title = 'Success! Your changes have been saved';\n @Input() description = 'This is an alert with icon, title and description.';\n @Input() details: string[] = [];\n @Input() className = '';\n\n get isDestructive(): boolean {\n return this.variant === 'destructive';\n }\n\n get isTitleOnly(): boolean {\n return this.variant === 'title-only';\n }\n}\n\n","<section\n role=\"alert\"\n [ngClass]=\"[\n 'w-full rounded-lg border border-solid border-border bg-background p-4',\n className\n ]\"\n>\n <div [ngClass]=\"['flex gap-3', isDestructive ? 'items-start' : 'items-center']\">\n <span class=\"inline-flex h-6 w-6 shrink-0 items-center justify-center\">\n <svg *ngIf=\"!isDestructive && !isTitleOnly\" viewBox=\"0 0 24 24\" class=\"h-5 w-5 text-foreground\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <circle cx=\"12\" cy=\"12\" r=\"9\" stroke=\"currentColor\" stroke-width=\"1.5\"></circle>\n <path d=\"M8.5 12.5L10.8 14.8L15.8 9.8\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </svg>\n <svg *ngIf=\"isTitleOnly\" viewBox=\"0 0 24 24\" class=\"h-5 w-5 text-foreground\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M5 8H19\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"></path>\n <path d=\"M9 8V6.5C9 5.67 9.67 5 10.5 5H13.5C14.33 5 15 5.67 15 6.5V8\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"></path>\n <path d=\"M7 8L8 18.5C8.07 19.33 8.77 20 9.6 20H14.4C15.23 20 15.93 19.33 16 18.5L17 8\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"></path>\n </svg>\n <svg *ngIf=\"isDestructive\" viewBox=\"0 0 24 24\" class=\"h-5 w-5 text-destructive\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <circle cx=\"12\" cy=\"12\" r=\"9\" stroke=\"currentColor\" stroke-width=\"1.5\"></circle>\n <path d=\"M12 8V12\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"></path>\n <circle cx=\"12\" cy=\"16\" r=\"1\" fill=\"currentColor\"></circle>\n </svg>\n </span>\n\n <div class=\"min-w-0 flex-1\">\n <h4\n [ngClass]=\"[\n 'm-0 text-sm font-medium',\n isDestructive ? 'text-destructive' : 'text-foreground'\n ]\"\n >\n {{ title }}\n </h4>\n\n <p\n *ngIf=\"!isTitleOnly && description\"\n [ngClass]=\"[\n 'm-0 mt-0.5 text-sm',\n isDestructive ? 'text-destructive' : 'text-muted-foreground'\n ]\"\n >\n {{ description }}\n </p>\n\n <ul *ngIf=\"isDestructive && details.length\" class=\"m-0 mt-1 pl-5 text-sm text-destructive\">\n <li *ngFor=\"let item of details\">{{ item }}</li>\n </ul>\n </div>\n </div>\n</section>\n","import { ChangeDetectionStrategy, Component, EventEmitter, HostListener, Input, Output } from '@angular/core';\n\n@Component({\n selector: 'pdm-alert-dialog',\n templateUrl: './alert-dialog.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PdmAlertDialogComponent {\n @Input() open = false;\n @Input() showTrigger = false;\n @Input() triggerText = 'Show dialog';\n @Input() title = 'Are you absolutely sure?';\n @Input() description = '';\n @Input() confirmText = 'Continue';\n @Input() cancelText = 'Cancel';\n @Input() className = '';\n\n /** Close when the ESC key is pressed. Default: `true`. */\n @Input() closeOnEsc = true;\n\n @Output() openChange = new EventEmitter<boolean>();\n @Output() confirm = new EventEmitter<void>();\n @Output() cancel = new EventEmitter<void>();\n\n /**\n * Returns `true` when at least one consumer listens to `openChange`.\n * - **Controlled** (has observers): parent manages `open` via two-way binding → only emit.\n * - **Uncontrolled** (no observers): we own the `open` state → mutate it locally.\n */\n private get isControlled(): boolean {\n return this.openChange.observed;\n }\n\n onTriggerClick(): void {\n if (!this.isControlled) {\n this.open = true;\n }\n this.openChange.emit(true);\n }\n\n onCancel(): void {\n this.cancel.emit();\n if (!this.isControlled) {\n this.open = false;\n }\n this.openChange.emit(false);\n }\n\n onConfirm(): void {\n this.confirm.emit();\n if (!this.isControlled) {\n this.open = false;\n }\n this.openChange.emit(false);\n }\n\n @HostListener('document:keydown.escape')\n onEsc(): void {\n if (this.open && this.closeOnEsc) {\n this.onCancel();\n }\n }\n}\n","<button\n *ngIf=\"showTrigger && !open\"\n type=\"button\"\n class=\"inline-flex h-9 appearance-none box-border items-center justify-center rounded-md border border-solid border-input bg-background px-4 py-2 text-sm font-medium text-foreground shadow-sm\"\n (click)=\"onTriggerClick()\"\n>\n {{ triggerText }}\n</button>\n\n<div *ngIf=\"open\" class=\"fixed inset-0 z-50 flex items-center justify-center p-5\">\n <div class=\"absolute inset-0 bg-foreground/30\" (click)=\"onCancel()\"></div>\n <section\n role=\"alertdialog\"\n aria-modal=\"true\"\n [ngClass]=\"[\n 'relative z-[60] w-full max-w-lg rounded-lg border border-solid border-border bg-background p-6 text-foreground shadow-lg',\n className\n ]\"\n >\n <div class=\"flex flex-col gap-2\">\n <h2 class=\"m-0 text-lg font-semibold leading-none tracking-tight\">{{ title }}</h2>\n <p *ngIf=\"description\" class=\"m-0 text-sm text-muted-foreground\">{{ description }}</p>\n </div>\n <div class=\"mt-4 flex items-center justify-end gap-2\">\n <button\n type=\"button\"\n class=\"inline-flex h-9 appearance-none box-border items-center justify-center rounded-md border border-solid border-input bg-background px-4 py-2 text-sm font-medium text-foreground shadow-sm\"\n (click)=\"onCancel()\"\n >\n {{ cancelText }}\n </button>\n <button\n type=\"button\"\n class=\"inline-flex h-9 appearance-none box-border items-center justify-center rounded-md bg-primary px-4 py-2 text-sm font-medium text-primary-foreground shadow-sm\"\n (click)=\"onConfirm()\"\n >\n {{ confirmText }}\n </button>\n </div>\n </section>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { PdmAlertComponent } from './alert.component';\nimport { PdmAlertDialogComponent } from './alert-dialog.component';\n\nconst COMPONENTS = [\n PdmAlertComponent,\n PdmAlertDialogComponent,\n];\n\n@NgModule({\n imports: [CommonModule],\n declarations: COMPONENTS,\n exports: COMPONENTS\n})\nexport class PdmAlertModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"pdm-ui-kit-src-alert.mjs","sources":["../../../src/alert/alert.component.ts","../../../src/alert/alert.component.html","../../../src/alert/alert-dialog.component.ts","../../../src/alert/alert-dialog.component.html","../../../src/alert/alert.module.ts","../../../src/alert/pdm-ui-kit-src-alert.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\nexport type PdmAlertVariant = 'default' | 'title-only' | 'destructive';\n\n@Component({\n selector: 'pdm-alert',\n templateUrl: './alert.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PdmAlertComponent {\n @Input() variant: PdmAlertVariant = 'default';\n @Input() title = 'Success! Your changes have been saved';\n @Input() description = 'This is an alert with icon, title and description.';\n @Input() details: string[] = [];\n @Input() className = '';\n\n get isDestructive(): boolean {\n return this.variant === 'destructive';\n }\n\n get isTitleOnly(): boolean {\n return this.variant === 'title-only';\n }\n}\n\n","<section\n role=\"alert\"\n [ngClass]=\"[\n 'w-full rounded-lg border border-solid border-border bg-background p-4',\n className\n ]\"\n>\n <div [ngClass]=\"['flex gap-3', isDestructive ? 'items-start' : 'items-center']\">\n <span class=\"inline-flex h-6 w-6 shrink-0 items-center justify-center\">\n <svg *ngIf=\"!isDestructive && !isTitleOnly\" aria-label=\"Success\" viewBox=\"0 0 24 24\" class=\"h-5 w-5 text-foreground\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <circle cx=\"12\" cy=\"12\" r=\"9\" stroke=\"currentColor\" stroke-width=\"1.5\"></circle>\n <path d=\"M8.5 12.5L10.8 14.8L15.8 9.8\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </svg>\n <svg *ngIf=\"isTitleOnly\" aria-label=\"Info\" viewBox=\"0 0 24 24\" class=\"h-5 w-5 text-foreground\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M5 8H19\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"></path>\n <path d=\"M9 8V6.5C9 5.67 9.67 5 10.5 5H13.5C14.33 5 15 5.67 15 6.5V8\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"></path>\n <path d=\"M7 8L8 18.5C8.07 19.33 8.77 20 9.6 20H14.4C15.23 20 15.93 19.33 16 18.5L17 8\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"></path>\n </svg>\n <svg *ngIf=\"isDestructive\" aria-label=\"Error\" viewBox=\"0 0 24 24\" class=\"h-5 w-5 text-destructive\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <circle cx=\"12\" cy=\"12\" r=\"9\" stroke=\"currentColor\" stroke-width=\"1.5\"></circle>\n <path d=\"M12 8V12\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"></path>\n <circle cx=\"12\" cy=\"16\" r=\"1\" fill=\"currentColor\"></circle>\n </svg>\n </span>\n\n <div class=\"min-w-0 flex-1\">\n <h4\n [ngClass]=\"[\n 'm-0 text-sm font-medium',\n isDestructive ? 'text-destructive' : 'text-foreground'\n ]\"\n >\n {{ title }}\n </h4>\n\n <p\n *ngIf=\"!isTitleOnly && description\"\n [ngClass]=\"[\n 'm-0 mt-0.5 text-sm',\n isDestructive ? 'text-destructive' : 'text-muted-foreground'\n ]\"\n >\n {{ description }}\n </p>\n\n <ul *ngIf=\"isDestructive && details.length\" class=\"m-0 mt-1 pl-5 text-sm text-destructive\">\n <li *ngFor=\"let item of details\">{{ item }}</li>\n </ul>\n </div>\n </div>\n</section>\n","import { ChangeDetectionStrategy, Component, EventEmitter, HostListener, Input, Output } from '@angular/core';\n\n@Component({\n selector: 'pdm-alert-dialog',\n templateUrl: './alert-dialog.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PdmAlertDialogComponent {\n @Input() open = false;\n @Input() showTrigger = false;\n @Input() triggerText = 'Show dialog';\n @Input() title = 'Are you absolutely sure?';\n @Input() description = '';\n @Input() confirmText = 'Continue';\n @Input() cancelText = 'Cancel';\n @Input() className = '';\n\n /** Close when the ESC key is pressed. Default: `true`. */\n @Input() closeOnEsc = true;\n\n @Output() openChange = new EventEmitter<boolean>();\n @Output() confirm = new EventEmitter<void>();\n @Output() cancel = new EventEmitter<void>();\n\n /**\n * Returns `true` when at least one consumer listens to `openChange`.\n * - **Controlled** (has observers): parent manages `open` via two-way binding → only emit.\n * - **Uncontrolled** (no observers): we own the `open` state → mutate it locally.\n */\n private get isControlled(): boolean {\n return this.openChange.observed;\n }\n\n onTriggerClick(): void {\n if (!this.isControlled) {\n this.open = true;\n }\n this.openChange.emit(true);\n }\n\n onCancel(): void {\n this.cancel.emit();\n if (!this.isControlled) {\n this.open = false;\n }\n this.openChange.emit(false);\n }\n\n onConfirm(): void {\n this.confirm.emit();\n if (!this.isControlled) {\n this.open = false;\n }\n this.openChange.emit(false);\n }\n\n @HostListener('document:keydown.escape')\n onEsc(): void {\n if (this.open && this.closeOnEsc) {\n this.onCancel();\n }\n }\n}\n","<button\n *ngIf=\"showTrigger && !open\"\n type=\"button\"\n class=\"inline-flex h-9 appearance-none box-border items-center justify-center rounded-md border border-solid border-input bg-background px-4 py-2 text-sm font-medium text-foreground shadow-sm\"\n (click)=\"onTriggerClick()\"\n>\n {{ triggerText }}\n</button>\n\n<div *ngIf=\"open\" class=\"fixed inset-0 z-50 flex items-center justify-center p-5\">\n <div class=\"absolute inset-0 bg-foreground/30\" (click)=\"onCancel()\"></div>\n <section\n role=\"alertdialog\"\n aria-modal=\"true\"\n [ngClass]=\"[\n 'relative z-[60] w-full max-w-lg rounded-lg border border-solid border-border bg-background p-6 text-foreground shadow-lg',\n className\n ]\"\n >\n <div class=\"flex flex-col gap-2\">\n <h2 class=\"m-0 text-lg font-semibold leading-none tracking-tight\">{{ title }}</h2>\n <p *ngIf=\"description\" class=\"m-0 text-sm text-muted-foreground\">{{ description }}</p>\n </div>\n <div class=\"mt-4 flex items-center justify-end gap-2\">\n <button\n type=\"button\"\n class=\"inline-flex h-9 appearance-none box-border items-center justify-center rounded-md border border-solid border-input bg-background px-4 py-2 text-sm font-medium text-foreground shadow-sm\"\n (click)=\"onCancel()\"\n >\n {{ cancelText }}\n </button>\n <button\n type=\"button\"\n class=\"inline-flex h-9 appearance-none box-border items-center justify-center rounded-md bg-primary px-4 py-2 text-sm font-medium text-primary-foreground shadow-sm\"\n (click)=\"onConfirm()\"\n >\n {{ confirmText }}\n </button>\n </div>\n </section>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { PdmAlertComponent } from './alert.component';\nimport { PdmAlertDialogComponent } from './alert-dialog.component';\n\nconst COMPONENTS = [\n PdmAlertComponent,\n PdmAlertDialogComponent,\n];\n\n@NgModule({\n imports: [CommonModule],\n declarations: COMPONENTS,\n exports: COMPONENTS\n})\nexport class PdmAlertModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -17,10 +17,10 @@ class PdmAspectRatioComponent {
|
|
|
17
17
|
}
|
|
18
18
|
}
|
|
19
19
|
PdmAspectRatioComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmAspectRatioComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
20
|
-
PdmAspectRatioComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: PdmAspectRatioComponent, selector: "pdm-aspect-ratio", inputs: { ratio: "ratio", imageSrc: "imageSrc", imageAlt: "imageAlt", className: "className" }, ngImport: i0, template: "<div class=\"relative w-full\" [ngClass]=\"className\" [style.paddingTop]=\"paddingTop\">\n <div class=\"absolute inset-0 overflow-hidden rounded-lg\">\n <img\n *ngIf=\"imageSrc\"\n [src]=\"imageSrc\"\n [alt]=\"imageAlt\"\n class=\"pointer-events-none h-full w-full rounded-lg object-cover\"\n />\n <ng-content></ng-content>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
20
|
+
PdmAspectRatioComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: PdmAspectRatioComponent, isStandalone: true, selector: "pdm-aspect-ratio", inputs: { ratio: "ratio", imageSrc: "imageSrc", imageAlt: "imageAlt", className: "className" }, ngImport: i0, template: "<div class=\"relative w-full\" [ngClass]=\"className\" [style.paddingTop]=\"paddingTop\">\n <div class=\"absolute inset-0 overflow-hidden rounded-lg\">\n <img\n *ngIf=\"imageSrc\"\n [src]=\"imageSrc\"\n [alt]=\"imageAlt\"\n class=\"pointer-events-none h-full w-full rounded-lg object-cover\"\n />\n <ng-content></ng-content>\n </div>\n</div>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
21
21
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmAspectRatioComponent, decorators: [{
|
|
22
22
|
type: Component,
|
|
23
|
-
args: [{ selector: 'pdm-aspect-ratio', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"relative w-full\" [ngClass]=\"className\" [style.paddingTop]=\"paddingTop\">\n <div class=\"absolute inset-0 overflow-hidden rounded-lg\">\n <img\n *ngIf=\"imageSrc\"\n [src]=\"imageSrc\"\n [alt]=\"imageAlt\"\n class=\"pointer-events-none h-full w-full rounded-lg object-cover\"\n />\n <ng-content></ng-content>\n </div>\n</div>\n" }]
|
|
23
|
+
args: [{ selector: 'pdm-aspect-ratio', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule], template: "<div class=\"relative w-full\" [ngClass]=\"className\" [style.paddingTop]=\"paddingTop\">\n <div class=\"absolute inset-0 overflow-hidden rounded-lg\">\n <img\n *ngIf=\"imageSrc\"\n [src]=\"imageSrc\"\n [alt]=\"imageAlt\"\n class=\"pointer-events-none h-full w-full rounded-lg object-cover\"\n />\n <ng-content></ng-content>\n </div>\n</div>\n" }]
|
|
24
24
|
}], propDecorators: { ratio: [{
|
|
25
25
|
type: Input
|
|
26
26
|
}], imageSrc: [{
|
|
@@ -31,20 +31,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
31
31
|
type: Input
|
|
32
32
|
}] } });
|
|
33
33
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
34
|
+
/**
|
|
35
|
+
* @deprecated Import PdmAspectRatioComponent directly instead. This module is kept for backwards compatibility.
|
|
36
|
+
* For modern Angular (v14+), use: import { PdmAspectRatioComponent } from 'pdm-ui-kit/aspect-ratio'
|
|
37
|
+
*/
|
|
37
38
|
class PdmAspectRatioModule {
|
|
38
39
|
}
|
|
39
40
|
PdmAspectRatioModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmAspectRatioModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
40
|
-
PdmAspectRatioModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: PdmAspectRatioModule,
|
|
41
|
-
PdmAspectRatioModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmAspectRatioModule, imports: [
|
|
41
|
+
PdmAspectRatioModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: PdmAspectRatioModule, imports: [PdmAspectRatioComponent], exports: [PdmAspectRatioComponent] });
|
|
42
|
+
PdmAspectRatioModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmAspectRatioModule, imports: [PdmAspectRatioComponent] });
|
|
42
43
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmAspectRatioModule, decorators: [{
|
|
43
44
|
type: NgModule,
|
|
44
45
|
args: [{
|
|
45
|
-
imports: [
|
|
46
|
-
|
|
47
|
-
exports: COMPONENTS
|
|
46
|
+
imports: [PdmAspectRatioComponent],
|
|
47
|
+
exports: [PdmAspectRatioComponent]
|
|
48
48
|
}]
|
|
49
49
|
}] });
|
|
50
50
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pdm-ui-kit-src-aspect-ratio.mjs","sources":["../../../src/aspect-ratio/aspect-ratio.component.ts","../../../src/aspect-ratio/aspect-ratio.component.html","../../../src/aspect-ratio/aspect-ratio.module.ts","../../../src/aspect-ratio/pdm-ui-kit-src-aspect-ratio.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n@Component({\n selector: 'pdm-aspect-ratio',\n templateUrl: './aspect-ratio.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush
|
|
1
|
+
{"version":3,"file":"pdm-ui-kit-src-aspect-ratio.mjs","sources":["../../../src/aspect-ratio/aspect-ratio.component.ts","../../../src/aspect-ratio/aspect-ratio.component.html","../../../src/aspect-ratio/aspect-ratio.module.ts","../../../src/aspect-ratio/pdm-ui-kit-src-aspect-ratio.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'pdm-aspect-ratio',\n templateUrl: './aspect-ratio.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [CommonModule],\n})\nexport class PdmAspectRatioComponent {\n @Input() ratio = 16 / 9;\n @Input() imageSrc = '';\n @Input() imageAlt = '';\n @Input() className = '';\n\n get paddingTop(): string {\n if (!this.ratio || this.ratio <= 0) return '56.25%';\n return (100 / this.ratio).toFixed(4) + '%';\n }\n}\n","<div class=\"relative w-full\" [ngClass]=\"className\" [style.paddingTop]=\"paddingTop\">\n <div class=\"absolute inset-0 overflow-hidden rounded-lg\">\n <img\n *ngIf=\"imageSrc\"\n [src]=\"imageSrc\"\n [alt]=\"imageAlt\"\n class=\"pointer-events-none h-full w-full rounded-lg object-cover\"\n />\n <ng-content></ng-content>\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { PdmAspectRatioComponent } from './aspect-ratio.component';\n\n/**\n * @deprecated Import PdmAspectRatioComponent directly instead. This module is kept for backwards compatibility.\n * For modern Angular (v14+), use: import { PdmAspectRatioComponent } from 'pdm-ui-kit/aspect-ratio'\n */\n@NgModule({\n imports: [PdmAspectRatioComponent],\n exports: [PdmAspectRatioComponent]\n})\nexport class PdmAspectRatioModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;MAUa,uBAAuB,CAAA;AAPpC,IAAA,WAAA,GAAA;AAQW,QAAA,IAAA,CAAA,KAAK,GAAG,EAAE,GAAG,CAAC,CAAC;AACf,QAAA,IAAQ,CAAA,QAAA,GAAG,EAAE,CAAC;AACd,QAAA,IAAQ,CAAA,QAAA,GAAG,EAAE,CAAC;AACd,QAAA,IAAS,CAAA,SAAA,GAAG,EAAE,CAAC;KAMzB;AAJC,IAAA,IAAI,UAAU,GAAA;QACZ,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC;AAAE,YAAA,OAAO,QAAQ,CAAC;AACpD,QAAA,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;KAC5C;;oHATU,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;wGAAvB,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,UAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECVpC,wXAWA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDHY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FAEX,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAPnC,SAAS;+BACE,kBAAkB,EAAA,eAAA,EAEX,uBAAuB,CAAC,MAAM,cACnC,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,CAAC,EAAA,QAAA,EAAA,wXAAA,EAAA,CAAA;8BAGd,KAAK,EAAA,CAAA;sBAAb,KAAK;gBACG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;;;AEXR;;;AAGG;MAKU,oBAAoB,CAAA;;iHAApB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;kHAApB,oBAAoB,EAAA,OAAA,EAAA,CAHrB,uBAAuB,CAAA,EAAA,OAAA,EAAA,CACvB,uBAAuB,CAAA,EAAA,CAAA,CAAA;AAEtB,oBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,YAHrB,uBAAuB,CAAA,EAAA,CAAA,CAAA;2FAGtB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAJhC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,uBAAuB,CAAC;oBAClC,OAAO,EAAE,CAAC,uBAAuB,CAAC;iBACnC,CAAA;;;ACVD;;AAEG;;;;"}
|
|
@@ -11,10 +11,10 @@ class PdmBadgeComponent {
|
|
|
11
11
|
}
|
|
12
12
|
}
|
|
13
13
|
PdmBadgeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmBadgeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
14
|
-
PdmBadgeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: PdmBadgeComponent, selector: "pdm-badge", inputs: { variant: "variant", text: "text", className: "className" }, ngImport: i0, template: "<span\n [ngClass]=\"[\n 'inline-flex items-center justify-center text-center align-middle rounded-full px-2.5 py-0.5 text-xs font-semibold',\n variant === 'default' ? 'bg-primary text-primary-foreground' : '',\n variant === 'secondary' ? 'bg-secondary text-secondary-foreground' : '',\n variant === 'destructive' ? 'bg-destructive text-destructive-foreground' : '',\n variant === 'outline' ? 'border border-solid border-input text-foreground' : '',\n variant === 'icon' ? 'gap-1 bg-primary text-primary-foreground' : '',\n variant === 'number' ? 'min-w-5 rounded-full bg-primary px-1.5 text-primary-foreground' : '',\n variant === 'destructive-number' ? 'min-w-5 rounded-full bg-destructive px-1.5 text-destructive-foreground' : '',\n variant === 'secondary-number' ? 'min-w-5 rounded-full border border-solid border-input px-1.5 text-foreground' : '',\n className\n ]\"\n>\n <svg\n *ngIf=\"variant === 'icon'\"\n viewBox=\"0 0 24 24\"\n class=\"h-4 w-4\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n >\n <circle cx=\"12\" cy=\"12\" r=\"9\" stroke=\"currentColor\" stroke-width=\"1.5\"></circle>\n <path d=\"M8.5 12.5L10.8 14.8L15.8 9.8\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </svg>\n <span [ngClass]=\"[variant === 'secondary-number' ? 'font-mono' : '']\">{{ text }}</span>\n</span>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
14
|
+
PdmBadgeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: PdmBadgeComponent, isStandalone: true, selector: "pdm-badge", inputs: { variant: "variant", text: "text", className: "className" }, ngImport: i0, template: "<span\n [ngClass]=\"[\n 'inline-flex items-center justify-center text-center align-middle rounded-full px-2.5 py-0.5 text-xs font-semibold',\n variant === 'default' ? 'bg-primary text-primary-foreground' : '',\n variant === 'secondary' ? 'bg-secondary text-secondary-foreground' : '',\n variant === 'destructive' ? 'bg-destructive text-destructive-foreground' : '',\n variant === 'outline' ? 'border border-solid border-input text-foreground' : '',\n variant === 'icon' ? 'gap-1 bg-primary text-primary-foreground' : '',\n variant === 'number' ? 'min-w-5 rounded-full bg-primary px-1.5 text-primary-foreground' : '',\n variant === 'destructive-number' ? 'min-w-5 rounded-full bg-destructive px-1.5 text-destructive-foreground' : '',\n variant === 'secondary-number' ? 'min-w-5 rounded-full border border-solid border-input px-1.5 text-foreground' : '',\n className\n ]\"\n>\n <svg\n *ngIf=\"variant === 'icon'\"\n viewBox=\"0 0 24 24\"\n class=\"h-4 w-4\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n >\n <circle cx=\"12\" cy=\"12\" r=\"9\" stroke=\"currentColor\" stroke-width=\"1.5\"></circle>\n <path d=\"M8.5 12.5L10.8 14.8L15.8 9.8\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </svg>\n <span [ngClass]=\"[variant === 'secondary-number' ? 'font-mono' : '']\">{{ text }}</span>\n</span>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
15
15
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmBadgeComponent, decorators: [{
|
|
16
16
|
type: Component,
|
|
17
|
-
args: [{ selector: 'pdm-badge', changeDetection: ChangeDetectionStrategy.OnPush, template: "<span\n [ngClass]=\"[\n 'inline-flex items-center justify-center text-center align-middle rounded-full px-2.5 py-0.5 text-xs font-semibold',\n variant === 'default' ? 'bg-primary text-primary-foreground' : '',\n variant === 'secondary' ? 'bg-secondary text-secondary-foreground' : '',\n variant === 'destructive' ? 'bg-destructive text-destructive-foreground' : '',\n variant === 'outline' ? 'border border-solid border-input text-foreground' : '',\n variant === 'icon' ? 'gap-1 bg-primary text-primary-foreground' : '',\n variant === 'number' ? 'min-w-5 rounded-full bg-primary px-1.5 text-primary-foreground' : '',\n variant === 'destructive-number' ? 'min-w-5 rounded-full bg-destructive px-1.5 text-destructive-foreground' : '',\n variant === 'secondary-number' ? 'min-w-5 rounded-full border border-solid border-input px-1.5 text-foreground' : '',\n className\n ]\"\n>\n <svg\n *ngIf=\"variant === 'icon'\"\n viewBox=\"0 0 24 24\"\n class=\"h-4 w-4\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n >\n <circle cx=\"12\" cy=\"12\" r=\"9\" stroke=\"currentColor\" stroke-width=\"1.5\"></circle>\n <path d=\"M8.5 12.5L10.8 14.8L15.8 9.8\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </svg>\n <span [ngClass]=\"[variant === 'secondary-number' ? 'font-mono' : '']\">{{ text }}</span>\n</span>\n" }]
|
|
17
|
+
args: [{ selector: 'pdm-badge', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule], template: "<span\n [ngClass]=\"[\n 'inline-flex items-center justify-center text-center align-middle rounded-full px-2.5 py-0.5 text-xs font-semibold',\n variant === 'default' ? 'bg-primary text-primary-foreground' : '',\n variant === 'secondary' ? 'bg-secondary text-secondary-foreground' : '',\n variant === 'destructive' ? 'bg-destructive text-destructive-foreground' : '',\n variant === 'outline' ? 'border border-solid border-input text-foreground' : '',\n variant === 'icon' ? 'gap-1 bg-primary text-primary-foreground' : '',\n variant === 'number' ? 'min-w-5 rounded-full bg-primary px-1.5 text-primary-foreground' : '',\n variant === 'destructive-number' ? 'min-w-5 rounded-full bg-destructive px-1.5 text-destructive-foreground' : '',\n variant === 'secondary-number' ? 'min-w-5 rounded-full border border-solid border-input px-1.5 text-foreground' : '',\n className\n ]\"\n>\n <svg\n *ngIf=\"variant === 'icon'\"\n viewBox=\"0 0 24 24\"\n class=\"h-4 w-4\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n >\n <circle cx=\"12\" cy=\"12\" r=\"9\" stroke=\"currentColor\" stroke-width=\"1.5\"></circle>\n <path d=\"M8.5 12.5L10.8 14.8L15.8 9.8\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </svg>\n <span [ngClass]=\"[variant === 'secondary-number' ? 'font-mono' : '']\">{{ text }}</span>\n</span>\n" }]
|
|
18
18
|
}], propDecorators: { variant: [{
|
|
19
19
|
type: Input
|
|
20
20
|
}], text: [{
|
|
@@ -23,20 +23,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
23
23
|
type: Input
|
|
24
24
|
}] } });
|
|
25
25
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
26
|
+
/**
|
|
27
|
+
* @deprecated Import PdmBadgeComponent directly instead. This module is kept for backwards compatibility.
|
|
28
|
+
* For modern Angular (v14+), use: import { PdmBadgeComponent } from 'pdm-ui-kit/badge'
|
|
29
|
+
*/
|
|
29
30
|
class PdmBadgeModule {
|
|
30
31
|
}
|
|
31
32
|
PdmBadgeModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmBadgeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
32
|
-
PdmBadgeModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: PdmBadgeModule,
|
|
33
|
-
PdmBadgeModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmBadgeModule, imports: [
|
|
33
|
+
PdmBadgeModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: PdmBadgeModule, imports: [PdmBadgeComponent], exports: [PdmBadgeComponent] });
|
|
34
|
+
PdmBadgeModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmBadgeModule, imports: [PdmBadgeComponent] });
|
|
34
35
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmBadgeModule, decorators: [{
|
|
35
36
|
type: NgModule,
|
|
36
37
|
args: [{
|
|
37
|
-
imports: [
|
|
38
|
-
|
|
39
|
-
exports: COMPONENTS
|
|
38
|
+
imports: [PdmBadgeComponent],
|
|
39
|
+
exports: [PdmBadgeComponent]
|
|
40
40
|
}]
|
|
41
41
|
}] });
|
|
42
42
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pdm-ui-kit-src-badge.mjs","sources":["../../../src/badge/badge.component.ts","../../../src/badge/badge.component.html","../../../src/badge/badge.module.ts","../../../src/badge/pdm-ui-kit-src-badge.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\nexport type PdmBadgeVariant =\n | 'default'\n | 'secondary'\n | 'destructive'\n | 'outline'\n | 'icon'\n | 'number'\n | 'destructive-number'\n | 'secondary-number';\n\n@Component({\n selector: 'pdm-badge',\n templateUrl: './badge.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush
|
|
1
|
+
{"version":3,"file":"pdm-ui-kit-src-badge.mjs","sources":["../../../src/badge/badge.component.ts","../../../src/badge/badge.component.html","../../../src/badge/badge.module.ts","../../../src/badge/pdm-ui-kit-src-badge.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nexport type PdmBadgeVariant =\n | 'default'\n | 'secondary'\n | 'destructive'\n | 'outline'\n | 'icon'\n | 'number'\n | 'destructive-number'\n | 'secondary-number';\n\n@Component({\n selector: 'pdm-badge',\n templateUrl: './badge.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [CommonModule],\n})\nexport class PdmBadgeComponent {\n @Input() variant: PdmBadgeVariant = 'default';\n @Input() text = 'Badge';\n @Input() className = '';\n}\n\n","<span\n [ngClass]=\"[\n 'inline-flex items-center justify-center text-center align-middle rounded-full px-2.5 py-0.5 text-xs font-semibold',\n variant === 'default' ? 'bg-primary text-primary-foreground' : '',\n variant === 'secondary' ? 'bg-secondary text-secondary-foreground' : '',\n variant === 'destructive' ? 'bg-destructive text-destructive-foreground' : '',\n variant === 'outline' ? 'border border-solid border-input text-foreground' : '',\n variant === 'icon' ? 'gap-1 bg-primary text-primary-foreground' : '',\n variant === 'number' ? 'min-w-5 rounded-full bg-primary px-1.5 text-primary-foreground' : '',\n variant === 'destructive-number' ? 'min-w-5 rounded-full bg-destructive px-1.5 text-destructive-foreground' : '',\n variant === 'secondary-number' ? 'min-w-5 rounded-full border border-solid border-input px-1.5 text-foreground' : '',\n className\n ]\"\n>\n <svg\n *ngIf=\"variant === 'icon'\"\n viewBox=\"0 0 24 24\"\n class=\"h-4 w-4\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n >\n <circle cx=\"12\" cy=\"12\" r=\"9\" stroke=\"currentColor\" stroke-width=\"1.5\"></circle>\n <path d=\"M8.5 12.5L10.8 14.8L15.8 9.8\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </svg>\n <span [ngClass]=\"[variant === 'secondary-number' ? 'font-mono' : '']\">{{ text }}</span>\n</span>\n","import { NgModule } from '@angular/core';\nimport { PdmBadgeComponent } from './badge.component';\n\n/**\n * @deprecated Import PdmBadgeComponent directly instead. This module is kept for backwards compatibility.\n * For modern Angular (v14+), use: import { PdmBadgeComponent } from 'pdm-ui-kit/badge'\n */\n@NgModule({\n imports: [PdmBadgeComponent],\n exports: [PdmBadgeComponent]\n})\nexport class PdmBadgeModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;MAoBa,iBAAiB,CAAA;AAP9B,IAAA,WAAA,GAAA;AAQW,QAAA,IAAO,CAAA,OAAA,GAAoB,SAAS,CAAC;AACrC,QAAA,IAAI,CAAA,IAAA,GAAG,OAAO,CAAC;AACf,QAAA,IAAS,CAAA,SAAA,GAAG,EAAE,CAAC;KACzB;;8GAJY,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,MAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECpB9B,26CA2BA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDTY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FAEX,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAP7B,SAAS;+BACE,WAAW,EAAA,eAAA,EAEJ,uBAAuB,CAAC,MAAM,cACnC,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,CAAC,EAAA,QAAA,EAAA,26CAAA,EAAA,CAAA;8BAGd,OAAO,EAAA,CAAA;sBAAf,KAAK;gBACG,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;;;AEpBR;;;AAGG;MAKU,cAAc,CAAA;;2GAAd,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;4GAAd,cAAc,EAAA,OAAA,EAAA,CAHf,iBAAiB,CAAA,EAAA,OAAA,EAAA,CACjB,iBAAiB,CAAA,EAAA,CAAA,CAAA;AAEhB,cAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,YAHf,iBAAiB,CAAA,EAAA,CAAA,CAAA;2FAGhB,cAAc,EAAA,UAAA,EAAA,CAAA;kBAJ1B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,iBAAiB,CAAC;oBAC5B,OAAO,EAAE,CAAC,iBAAiB,CAAC;iBAC7B,CAAA;;;ACVD;;AAEG;;;;"}
|
|
@@ -3,6 +3,61 @@ import { EventEmitter, Component, ChangeDetectionStrategy, Input, Output, NgModu
|
|
|
3
3
|
import * as i1 from '@angular/common';
|
|
4
4
|
import { CommonModule } from '@angular/common';
|
|
5
5
|
|
|
6
|
+
const BUTTON_TONE_MAP = {
|
|
7
|
+
default: {
|
|
8
|
+
default: 'border-primary bg-primary text-primary-foreground',
|
|
9
|
+
hover: 'border-primary bg-primary text-primary-foreground opacity-90',
|
|
10
|
+
},
|
|
11
|
+
primary: {
|
|
12
|
+
default: 'border-primary bg-primary text-primary-foreground',
|
|
13
|
+
hover: 'border-primary bg-primary text-primary-foreground opacity-90',
|
|
14
|
+
},
|
|
15
|
+
destructive: {
|
|
16
|
+
default: 'border-border bg-destructive text-destructive-foreground',
|
|
17
|
+
hover: 'border-border bg-destructive text-destructive-foreground opacity-90',
|
|
18
|
+
},
|
|
19
|
+
outline: {
|
|
20
|
+
default: 'border-border bg-background text-foreground',
|
|
21
|
+
hover: 'border-border bg-muted text-foreground',
|
|
22
|
+
},
|
|
23
|
+
subtle: {
|
|
24
|
+
default: 'border-secondary bg-secondary text-secondary-foreground',
|
|
25
|
+
hover: 'border-accent bg-accent text-accent-foreground',
|
|
26
|
+
},
|
|
27
|
+
secondary: {
|
|
28
|
+
default: 'border-secondary bg-secondary text-secondary-foreground',
|
|
29
|
+
hover: 'border-accent bg-accent text-accent-foreground',
|
|
30
|
+
},
|
|
31
|
+
ghost: {
|
|
32
|
+
default: 'border-border bg-transparent text-foreground',
|
|
33
|
+
hover: 'border-border bg-accent text-accent-foreground',
|
|
34
|
+
},
|
|
35
|
+
link: {
|
|
36
|
+
default: 'border-border bg-transparent text-primary',
|
|
37
|
+
hover: 'border-border bg-transparent text-primary underline underline-offset-4',
|
|
38
|
+
},
|
|
39
|
+
'with-icon': {
|
|
40
|
+
default: 'border-primary bg-primary text-primary-foreground',
|
|
41
|
+
hover: 'border-primary bg-primary text-primary-foreground opacity-90',
|
|
42
|
+
},
|
|
43
|
+
icon: {
|
|
44
|
+
default: 'border-border bg-background text-foreground',
|
|
45
|
+
hover: 'border-border bg-accent text-accent-foreground',
|
|
46
|
+
},
|
|
47
|
+
'icon-circle': {
|
|
48
|
+
default: 'border-border bg-background text-foreground',
|
|
49
|
+
hover: 'border-border bg-accent text-accent-foreground',
|
|
50
|
+
},
|
|
51
|
+
rounded: {
|
|
52
|
+
default: 'border-border bg-background text-foreground',
|
|
53
|
+
hover: 'border-border bg-accent text-accent-foreground',
|
|
54
|
+
},
|
|
55
|
+
loading: {
|
|
56
|
+
default: 'border-primary bg-primary text-primary-foreground opacity-70',
|
|
57
|
+
hover: 'border-primary bg-primary text-primary-foreground opacity-70',
|
|
58
|
+
},
|
|
59
|
+
};
|
|
60
|
+
|
|
6
61
|
class PdmButtonComponent {
|
|
7
62
|
constructor() {
|
|
8
63
|
this.type = 'button';
|
|
@@ -13,21 +68,7 @@ class PdmButtonComponent {
|
|
|
13
68
|
this.loading = false;
|
|
14
69
|
this.className = '';
|
|
15
70
|
this.pressed = new EventEmitter();
|
|
16
|
-
this.toneClassMap =
|
|
17
|
-
default: { default: 'border-primary bg-primary text-primary-foreground', hover: 'border-primary bg-primary text-primary-foreground opacity-90' },
|
|
18
|
-
primary: { default: 'border-primary bg-primary text-primary-foreground', hover: 'border-primary bg-primary text-primary-foreground opacity-90' },
|
|
19
|
-
destructive: { default: 'border-border bg-destructive text-destructive-foreground', hover: 'border-border bg-destructive text-destructive-foreground opacity-90' },
|
|
20
|
-
outline: { default: 'border-border bg-background text-foreground', hover: 'border-border bg-muted text-foreground' },
|
|
21
|
-
subtle: { default: 'border-secondary bg-secondary text-secondary-foreground', hover: 'border-accent bg-accent text-accent-foreground' },
|
|
22
|
-
secondary: { default: 'border-secondary bg-secondary text-secondary-foreground', hover: 'border-accent bg-accent text-accent-foreground' },
|
|
23
|
-
ghost: { default: 'border-border bg-transparent text-foreground', hover: 'border-border bg-accent text-accent-foreground' },
|
|
24
|
-
link: { default: 'border-border bg-transparent text-primary', hover: 'border-border bg-transparent text-primary underline underline-offset-4' },
|
|
25
|
-
'with-icon': { default: 'border-primary bg-primary text-primary-foreground', hover: 'border-primary bg-primary text-primary-foreground opacity-90' },
|
|
26
|
-
icon: { default: 'border-border bg-background text-foreground', hover: 'border-border bg-accent text-accent-foreground' },
|
|
27
|
-
'icon-circle': { default: 'border-border bg-background text-foreground', hover: 'border-border bg-accent text-accent-foreground' },
|
|
28
|
-
rounded: { default: 'border-border bg-background text-foreground', hover: 'border-border bg-accent text-accent-foreground' },
|
|
29
|
-
loading: { default: 'border-primary bg-primary text-primary-foreground opacity-70', hover: 'border-primary bg-primary text-primary-foreground opacity-70' }
|
|
30
|
-
};
|
|
71
|
+
this.toneClassMap = BUTTON_TONE_MAP;
|
|
31
72
|
}
|
|
32
73
|
get isDisabled() {
|
|
33
74
|
return this.disabled || this.loading || this.variant === 'loading';
|
|
@@ -92,10 +133,10 @@ class PdmButtonComponent {
|
|
|
92
133
|
}
|
|
93
134
|
}
|
|
94
135
|
PdmButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
95
|
-
PdmButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: PdmButtonComponent, selector: "pdm-button", inputs: { type: "type", variant: "variant", state: "state", size: "size", disabled: "disabled", loading: "loading", className: "className" }, outputs: { pressed: "pressed" }, ngImport: i0, template: "<button\n [type]=\"type\"\n [disabled]=\"isDisabled\"\n [attr.aria-busy]=\"loading\"\n [ngClass]=\"rootClasses\"\n (click)=\"onClick($event)\"\n>\n <span\n *ngIf=\"loading\"\n class=\"inline-block h-4 w-4 animate-spin rounded-full border-2 border-current border-r-transparent\"\n aria-hidden=\"true\"\n ></span>\n <ng-content select=\"[pdmButtonIcon]\" *ngIf=\"showsIconSlot\"></ng-content>\n <ng-content></ng-content>\n</button>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
136
|
+
PdmButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: PdmButtonComponent, selector: "pdm-button", inputs: { type: "type", variant: "variant", state: "state", size: "size", disabled: "disabled", loading: "loading", className: "className" }, outputs: { pressed: "pressed" }, ngImport: i0, template: "<button\n [type]=\"type\"\n [disabled]=\"isDisabled\"\n [attr.aria-busy]=\"isDisabled && loading ? true : null\"\n [ngClass]=\"rootClasses\"\n (click)=\"onClick($event)\"\n>\n <span\n *ngIf=\"loading\"\n class=\"inline-block h-4 w-4 animate-spin rounded-full border-2 border-current border-r-transparent\"\n aria-hidden=\"true\"\n ></span>\n <ng-content select=\"[pdmButtonIcon]\" *ngIf=\"showsIconSlot\"></ng-content>\n <ng-content></ng-content>\n</button>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
96
137
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmButtonComponent, decorators: [{
|
|
97
138
|
type: Component,
|
|
98
|
-
args: [{ selector: 'pdm-button', changeDetection: ChangeDetectionStrategy.OnPush, template: "<button\n [type]=\"type\"\n [disabled]=\"isDisabled\"\n [attr.aria-busy]=\"loading\"\n [ngClass]=\"rootClasses\"\n (click)=\"onClick($event)\"\n>\n <span\n *ngIf=\"loading\"\n class=\"inline-block h-4 w-4 animate-spin rounded-full border-2 border-current border-r-transparent\"\n aria-hidden=\"true\"\n ></span>\n <ng-content select=\"[pdmButtonIcon]\" *ngIf=\"showsIconSlot\"></ng-content>\n <ng-content></ng-content>\n</button>\n" }]
|
|
139
|
+
args: [{ selector: 'pdm-button', changeDetection: ChangeDetectionStrategy.OnPush, template: "<button\n [type]=\"type\"\n [disabled]=\"isDisabled\"\n [attr.aria-busy]=\"isDisabled && loading ? true : null\"\n [ngClass]=\"rootClasses\"\n (click)=\"onClick($event)\"\n>\n <span\n *ngIf=\"loading\"\n class=\"inline-block h-4 w-4 animate-spin rounded-full border-2 border-current border-r-transparent\"\n aria-hidden=\"true\"\n ></span>\n <ng-content select=\"[pdmButtonIcon]\" *ngIf=\"showsIconSlot\"></ng-content>\n <ng-content></ng-content>\n</button>\n" }]
|
|
99
140
|
}], propDecorators: { type: [{
|
|
100
141
|
type: Input
|
|
101
142
|
}], variant: [{
|