semmet-angular 0.42.0 → 0.44.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.
Files changed (218) hide show
  1. package/README.en.md +2 -315
  2. package/README.md +172 -264
  3. package/package.json +2 -2
  4. package/src/accordion/files/__name@dasherize__/__name@dasherize__.css.template +4 -41
  5. package/src/accordion/schema.json +19 -4
  6. package/src/alert/files/__name@dasherize__/__name@dasherize__.css.template +1 -25
  7. package/src/alert/files/__name@dasherize__/__name@dasherize__.html.template +3 -3
  8. package/src/alert/files/__name@dasherize__/__name@dasherize__.ts.template +4 -1
  9. package/src/alert/schema.json +19 -4
  10. package/src/alert-dialog/files/__name@dasherize__/__name@dasherize__.css.template +3 -56
  11. package/src/alert-dialog/files/__name@dasherize__/__name@dasherize__.html.template +6 -6
  12. package/src/alert-dialog/files/__name@dasherize__/__name@dasherize__.ts.template +7 -1
  13. package/src/alert-dialog/schema.json +19 -4
  14. package/src/avatar/files/__name@dasherize__/__name@dasherize__.css.template +17 -0
  15. package/src/avatar/files/__name@dasherize__/__name@dasherize__.html.template +28 -0
  16. package/src/avatar/files/__name@dasherize__/__name@dasherize__.spec.ts.template +27 -0
  17. package/src/avatar/files/__name@dasherize__/__name@dasherize__.ts.template +35 -0
  18. package/src/avatar/index.d.ts +1 -0
  19. package/src/avatar/index.js +6 -0
  20. package/src/avatar/index.js.map +1 -0
  21. package/src/avatar/index.ts +3 -0
  22. package/src/avatar/schema.d.ts +1 -0
  23. package/src/avatar/schema.js +3 -0
  24. package/src/avatar/schema.js.map +1 -0
  25. package/src/avatar/schema.json +44 -0
  26. package/src/avatar/schema.ts +1 -0
  27. package/src/badge/files/__name@dasherize__/__name@dasherize__.css.template +0 -77
  28. package/src/badge/files/__name@dasherize__/__name@dasherize__.ts.template +2 -5
  29. package/src/badge/schema.json +19 -4
  30. package/src/block/files/__name@dasherize__/__name@dasherize__.css.template +10 -81
  31. package/src/block/files/__name@dasherize__/__name@dasherize__.html.template +33 -25
  32. package/src/block/files/__name@dasherize__/__name@dasherize__.ts.template +41 -10
  33. package/src/block/schema.json +19 -4
  34. package/src/breadcrumb/files/__name@dasherize__/__name@dasherize__.css.template +2 -23
  35. package/src/breadcrumb/files/__name@dasherize__/__name@dasherize__.html.template +4 -4
  36. package/src/breadcrumb/files/__name@dasherize__/__name@dasherize__.ts.template +9 -5
  37. package/src/breadcrumb/schema.json +19 -4
  38. package/src/button/files/__name@dasherize__/__name@dasherize__.css.template +2 -79
  39. package/src/button/files/__name@dasherize__/__name@dasherize__.ts.template +2 -5
  40. package/src/button/schema.json +19 -4
  41. package/src/button-group/files/__name@dasherize__/__name@dasherize__.css.template +2 -70
  42. package/src/button-group/files/__name@dasherize__/__name@dasherize__.ts.template +1 -2
  43. package/src/button-group/schema.json +19 -4
  44. package/src/card/files/__name@dasherize__/__name@dasherize__.css.template +0 -67
  45. package/src/card/files/__name@dasherize__/__name@dasherize__.html.template +10 -55
  46. package/src/card/files/__name@dasherize__/__name@dasherize__.ts.template +2 -45
  47. package/src/card/schema.json +19 -4
  48. package/src/carousel/files/__name@dasherize__/__name@dasherize__.css.template +2 -32
  49. package/src/carousel/files/__name@dasherize__/__name@dasherize__.html.template +4 -4
  50. package/src/carousel/files/__name@dasherize__/__name@dasherize__.ts.template +4 -0
  51. package/src/carousel/schema.json +19 -4
  52. package/src/checkbox/files/__name@dasherize__/__name@dasherize__.css.template +5 -21
  53. package/src/checkbox/schema.json +19 -4
  54. package/src/close-button/files/__name@dasherize__/__name@dasherize__.css.template +9 -47
  55. package/src/close-button/files/__name@dasherize__/__name@dasherize__.ts.template +2 -5
  56. package/src/close-button/schema.json +19 -4
  57. package/src/collection.json +21 -1
  58. package/src/combobox/files/__name@dasherize__/__name@dasherize__.css.template +4 -49
  59. package/src/combobox/files/__name@dasherize__/__name@dasherize__.html.template +2 -2
  60. package/src/combobox/files/__name@dasherize__/__name@dasherize__.ts.template +11 -8
  61. package/src/combobox/schema.json +19 -4
  62. package/src/dialog/files/__name@dasherize__/__name@dasherize__.css.template +3 -45
  63. package/src/dialog/files/__name@dasherize__/__name@dasherize__.html.template +5 -5
  64. package/src/dialog/files/__name@dasherize__/__name@dasherize__.ts.template +6 -1
  65. package/src/dialog/schema.json +19 -4
  66. package/src/disclosure/files/__name@dasherize__/__name@dasherize__.css.template +4 -36
  67. package/src/disclosure/schema.json +19 -4
  68. package/src/e2e/index.d.ts +2 -0
  69. package/src/e2e/index.js +90 -0
  70. package/src/e2e/index.js.map +1 -0
  71. package/src/e2e/index.ts +106 -0
  72. package/src/e2e/schema.d.ts +2 -0
  73. package/src/e2e/schema.js +3 -0
  74. package/src/e2e/schema.js.map +1 -0
  75. package/src/e2e/schema.json +9 -0
  76. package/src/e2e/schema.ts +1 -0
  77. package/src/form/files/__name@dasherize__/__name@dasherize__.css.template +1 -77
  78. package/src/form/files/__name@dasherize__/__name@dasherize__.html.template +7 -7
  79. package/src/form/files/__name@dasherize__/__name@dasherize__.ts.template +20 -7
  80. package/src/form/schema.json +19 -4
  81. package/src/input/files/__name@dasherize__/__name@dasherize__.css.template +2 -58
  82. package/src/input/schema.json +19 -4
  83. package/src/input-group/files/__name@dasherize__/__name@dasherize__.css.template +2 -68
  84. package/src/input-group/files/__name@dasherize__/__name@dasherize__.html.template +13 -5
  85. package/src/input-group/files/__name@dasherize__/__name@dasherize__.ts.template +21 -6
  86. package/src/input-group/schema.json +19 -4
  87. package/src/landmarks/files/__name@dasherize__/__name@dasherize__.css.template +0 -24
  88. package/src/landmarks/files/__name@dasherize__/__name@dasherize__.html.template +2 -2
  89. package/src/landmarks/files/__name@dasherize__/__name@dasherize__.ts.template +5 -2
  90. package/src/landmarks/schema.json +19 -4
  91. package/src/list-group/files/__name@dasherize__/__name@dasherize__.css.template +0 -123
  92. package/src/list-group/files/__name@dasherize__/__name@dasherize__.e2e-spec.ts.template +8 -9
  93. package/src/list-group/files/__name@dasherize__/__name@dasherize__.html.template +13 -47
  94. package/src/list-group/files/__name@dasherize__/__name@dasherize__.spec.ts.template +46 -24
  95. package/src/list-group/files/__name@dasherize__/__name@dasherize__.ts.template +97 -39
  96. package/src/list-group/schema.json +19 -4
  97. package/src/listbox/files/__name@dasherize__/__name@dasherize__.css.template +3 -37
  98. package/src/listbox/files/__name@dasherize__/__name@dasherize__.html.template +2 -2
  99. package/src/listbox/files/__name@dasherize__/__name@dasherize__.ts.template +3 -1
  100. package/src/listbox/schema.json +19 -4
  101. package/src/menu-button/files/__name@dasherize__/__name@dasherize__.css.template +7 -47
  102. package/src/menu-button/files/__name@dasherize__/__name@dasherize__.html.template +3 -3
  103. package/src/menu-button/files/__name@dasherize__/__name@dasherize__.ts.template +10 -7
  104. package/src/menu-button/schema.json +19 -4
  105. package/src/meter/files/__name@dasherize__/__name@dasherize__.css.template +0 -12
  106. package/src/meter/files/__name@dasherize__/__name@dasherize__.html.template +2 -2
  107. package/src/meter/files/__name@dasherize__/__name@dasherize__.ts.template +3 -1
  108. package/src/meter/schema.json +19 -4
  109. package/src/navbar/files/__name@dasherize__/__name@dasherize__.css.template +6 -62
  110. package/src/navbar/schema.json +19 -4
  111. package/src/navigation-menu/files/__name@dasherize__/__name@dasherize__.css.template +6 -37
  112. package/src/navigation-menu/files/__name@dasherize__/__name@dasherize__.html.template +7 -6
  113. package/src/navigation-menu/files/__name@dasherize__/__name@dasherize__.ts.template +15 -1
  114. package/src/navigation-menu/schema.json +19 -4
  115. package/src/ng-add/index.d.ts +1 -1
  116. package/src/ng-add/index.js +2 -72
  117. package/src/ng-add/index.js.map +1 -1
  118. package/src/ng-add/index.ts +3 -86
  119. package/src/ng-add/schema.d.ts +0 -1
  120. package/src/ng-add/schema.json +0 -5
  121. package/src/ng-add/schema.ts +0 -1
  122. package/src/offcanvas/files/__name@dasherize__/__name@dasherize__.css.template +3 -70
  123. package/src/offcanvas/schema.json +19 -4
  124. package/src/pagination/files/__name@dasherize__/__name@dasherize__.css.template +2 -33
  125. package/src/pagination/files/__name@dasherize__/__name@dasherize__.html.template +6 -6
  126. package/src/pagination/files/__name@dasherize__/__name@dasherize__.ts.template +7 -1
  127. package/src/pagination/schema.json +19 -4
  128. package/src/popover/files/__name@dasherize__/__name@dasherize__.css.template +8 -69
  129. package/src/popover/schema.json +19 -4
  130. package/src/progress-bar/files/__name@dasherize__/__name@dasherize__.css.template +1 -31
  131. package/src/progress-bar/files/__name@dasherize__/__name@dasherize__.html.template +3 -3
  132. package/src/progress-bar/files/__name@dasherize__/__name@dasherize__.ts.template +5 -1
  133. package/src/progress-bar/schema.json +19 -4
  134. package/src/radio-group/files/__name@dasherize__/__name@dasherize__.css.template +4 -31
  135. package/src/radio-group/files/__name@dasherize__/__name@dasherize__.html.template +2 -2
  136. package/src/radio-group/files/__name@dasherize__/__name@dasherize__.ts.template +2 -1
  137. package/src/radio-group/schema.json +19 -4
  138. package/src/rating/files/__name@dasherize__/__name@dasherize__.css.template +17 -0
  139. package/src/rating/files/__name@dasherize__/__name@dasherize__.html.template +34 -0
  140. package/src/rating/files/__name@dasherize__/__name@dasherize__.spec.ts.template +38 -0
  141. package/src/rating/files/__name@dasherize__/__name@dasherize__.ts.template +75 -0
  142. package/src/rating/index.d.ts +1 -0
  143. package/src/rating/index.js +6 -0
  144. package/src/rating/index.js.map +1 -0
  145. package/src/rating/index.ts +3 -0
  146. package/src/rating/schema.d.ts +1 -0
  147. package/src/rating/schema.js +3 -0
  148. package/src/rating/schema.js.map +1 -0
  149. package/src/rating/schema.json +44 -0
  150. package/src/rating/schema.ts +1 -0
  151. package/src/select/files/__name@dasherize__/__name@dasherize__.css.template +4 -55
  152. package/src/select/schema.json +19 -4
  153. package/src/skeleton/files/__name@dasherize__/__name@dasherize__.css.template +2 -29
  154. package/src/skeleton/files/__name@dasherize__/__name@dasherize__.ts.template +1 -3
  155. package/src/skeleton/schema.json +19 -4
  156. package/src/skip-link/files/__name@dasherize__/__name@dasherize__.css.template +2 -14
  157. package/src/skip-link/files/__name@dasherize__/__name@dasherize__.html.template +2 -2
  158. package/src/skip-link/files/__name@dasherize__/__name@dasherize__.ts.template +5 -2
  159. package/src/skip-link/schema.json +19 -4
  160. package/src/slider/files/__name@dasherize__/__name@dasherize__.css.template +6 -20
  161. package/src/slider/files/__name@dasherize__/__name@dasherize__.html.template +2 -2
  162. package/src/slider/files/__name@dasherize__/__name@dasherize__.ts.template +3 -1
  163. package/src/slider/schema.json +19 -4
  164. package/src/spinbutton/files/__name@dasherize__/__name@dasherize__.css.template +6 -35
  165. package/src/spinbutton/files/__name@dasherize__/__name@dasherize__.html.template +4 -4
  166. package/src/spinbutton/files/__name@dasherize__/__name@dasherize__.ts.template +5 -1
  167. package/src/spinbutton/schema.json +19 -4
  168. package/src/spinner/files/__name@dasherize__/__name@dasherize__.css.template +0 -43
  169. package/src/spinner/files/__name@dasherize__/__name@dasherize__.ts.template +2 -5
  170. package/src/spinner/schema.json +19 -4
  171. package/src/steps/files/__name@dasherize__/__name@dasherize__.css.template +36 -0
  172. package/src/steps/files/__name@dasherize__/__name@dasherize__.html.template +44 -0
  173. package/src/steps/files/__name@dasherize__/__name@dasherize__.spec.ts.template +35 -0
  174. package/src/steps/files/__name@dasherize__/__name@dasherize__.ts.template +107 -0
  175. package/src/steps/index.d.ts +1 -0
  176. package/src/steps/index.js +6 -0
  177. package/src/steps/index.js.map +1 -0
  178. package/src/steps/index.ts +3 -0
  179. package/src/steps/schema.d.ts +1 -0
  180. package/src/steps/schema.js +3 -0
  181. package/src/steps/schema.js.map +1 -0
  182. package/src/steps/schema.json +44 -0
  183. package/src/steps/schema.ts +1 -0
  184. package/src/switch/files/__name@dasherize__/__name@dasherize__.css.template +7 -22
  185. package/src/switch/schema.json +19 -4
  186. package/src/table/files/__name@dasherize__/__name@dasherize__.css.template +0 -25
  187. package/src/table/files/__name@dasherize__/__name@dasherize__.html.template +3 -3
  188. package/src/table/files/__name@dasherize__/__name@dasherize__.ts.template +3 -0
  189. package/src/table/schema.json +19 -4
  190. package/src/tabs/files/__name@dasherize__/__name@dasherize__.css.template +5 -44
  191. package/src/tabs/files/__name@dasherize__/__name@dasherize__.html.template +2 -2
  192. package/src/tabs/files/__name@dasherize__/__name@dasherize__.ts.template +2 -0
  193. package/src/tabs/schema.json +19 -4
  194. package/src/textarea/files/__name@dasherize__/__name@dasherize__.css.template +2 -59
  195. package/src/textarea/schema.json +19 -4
  196. package/src/toast/files/__name@dasherize__/__name@dasherize__.css.template +1 -35
  197. package/src/toast/files/__name@dasherize__/__name@dasherize__.html.template +4 -4
  198. package/src/toast/files/__name@dasherize__/__name@dasherize__.ts.template +5 -1
  199. package/src/toast/schema.json +19 -4
  200. package/src/toolbar/files/__name@dasherize__/__name@dasherize__.css.template +2 -36
  201. package/src/toolbar/files/__name@dasherize__/__name@dasherize__.html.template +3 -3
  202. package/src/toolbar/files/__name@dasherize__/__name@dasherize__.ts.template +11 -8
  203. package/src/toolbar/schema.json +19 -4
  204. package/src/tooltip/files/__name@dasherize__/__name@dasherize__.css.template +1 -32
  205. package/src/tooltip/schema.json +19 -4
  206. package/src/tree-view/files/__name@dasherize__/__name@dasherize__.css.template +5 -27
  207. package/src/tree-view/files/__name@dasherize__/__name@dasherize__.html.template +3 -3
  208. package/src/tree-view/files/__name@dasherize__/__name@dasherize__.ts.template +16 -13
  209. package/src/tree-view/schema.json +19 -4
  210. package/src/utils/generate-component.js +3 -1
  211. package/src/utils/generate-component.js.map +1 -1
  212. package/src/utils/generate-component.ts +3 -1
  213. package/src/utils/generate-composition.js +0 -1
  214. package/src/utils/generate-composition.js.map +1 -1
  215. package/src/utils/generate-composition.ts +0 -1
  216. package/src/utils/schema-types.d.ts +1 -0
  217. package/src/utils/schema-types.ts +1 -0
  218. package/README.pt-BR.md +0 -330
@@ -1,4 +1,4 @@
1
- import { Component, signal } from '@angular/core';
1
+ import { Component, input, signal } from '@angular/core';
2
2
 
3
3
  let nextId = 0;
4
4
 
@@ -11,4 +11,6 @@ let nextId = 0;
11
11
  export class <%= classify(name) %> {
12
12
  protected readonly instanceId = `<%= dasherize(name) %>-${nextId++}`;
13
13
  protected readonly value = signal(70);
14
+
15
+ readonly label = input('Disk usage');
14
16
  }
@@ -9,21 +9,36 @@
9
9
  "name": {
10
10
  "type": "string",
11
11
  "description": "The name for the new component. Used to derive the class name, selector, and file names.",
12
- "$default": { "$source": "argv", "index": 0 },
12
+ "$default": {
13
+ "$source": "argv",
14
+ "index": 0
15
+ },
13
16
  "x-prompt": "What name would you like to use for the meter component?"
14
17
  },
18
+ "e2e": {
19
+ "type": "boolean",
20
+ "default": false,
21
+ "description": "Generate a Playwright e2e spec for this component. Requires Playwright to be installed/configured in the consuming app."
22
+ },
15
23
  "path": {
16
24
  "type": "string",
17
25
  "format": "path",
18
- "$default": { "$source": "workingDirectory" },
26
+ "$default": {
27
+ "$source": "workingDirectory"
28
+ },
19
29
  "description": "The path where the component files should be created, relative to the workspace root. Defaults to the project's source root.",
20
30
  "visible": false
21
31
  },
22
32
  "project": {
23
33
  "type": "string",
24
34
  "description": "The name of the project to add the component to.",
25
- "$default": { "$source": "projectName" }
35
+ "$default": {
36
+ "$source": "projectName"
37
+ }
26
38
  }
27
39
  },
28
- "required": ["name", "project"]
40
+ "required": [
41
+ "name",
42
+ "project"
43
+ ]
29
44
  }
@@ -1,40 +1,17 @@
1
1
  :host {
2
- --semmet-color-primary: #18181b;
3
- --semmet-color-surface: #ffffff;
4
- --semmet-color-surface-muted: #f4f4f5;
5
- --semmet-color-outline: #d4d4d8;
6
- --semmet-color-on-surface: #27272a;
7
- --semmet-color-on-surface-variant: #71717a;
8
- --semmet-radius-md: 10px;
9
- --semmet-space-3xs: 4px;
10
- --semmet-space-2xs: 8px;
11
- --semmet-space-xs: 16px;
12
- --semmet-target-md: 40px;
13
- --semmet-motion: 160ms cubic-bezier(0.2, 0, 0, 1);
14
-
15
2
  display: block;
16
- font-family: Roboto, system-ui, -apple-system, 'Segoe UI', sans-serif;
17
3
  }
18
4
 
19
5
  .semmet-navbar {
20
6
  display: grid;
21
7
  grid-template-columns: 1fr auto;
22
8
  align-items: center;
23
- gap: var(--semmet-space-xs);
24
- padding: var(--semmet-space-2xs);
25
- border: 1px solid var(--semmet-color-outline);
26
- border-radius: var(--semmet-radius-md);
27
- color: var(--semmet-color-on-surface);
28
- background: var(--semmet-color-surface);
29
9
  }
30
10
 
31
11
  .semmet-navbar__brand {
32
12
  display: inline-flex;
33
13
  align-items: center;
34
- min-height: var(--semmet-target-md);
35
14
  color: inherit;
36
- font-size: 1.0625rem;
37
- font-weight: 800;
38
15
  text-decoration: none;
39
16
  }
40
17
 
@@ -43,13 +20,11 @@
43
20
  display: inline-flex;
44
21
  align-items: center;
45
22
  justify-content: center;
46
- width: var(--semmet-target-md);
47
- height: var(--semmet-target-md);
48
- border: 1px solid var(--semmet-color-outline);
49
- border-radius: var(--semmet-radius-md);
50
23
  color: inherit;
51
- background: var(--semmet-color-surface);
24
+ background: none;
25
+ border: 0;
52
26
  cursor: pointer;
27
+ font: inherit;
53
28
  }
54
29
 
55
30
  .semmet-navbar__toggle span,
@@ -58,7 +33,6 @@
58
33
  display: block;
59
34
  width: 1.125rem;
60
35
  height: 0.125rem;
61
- border-radius: 999px;
62
36
  background: currentColor;
63
37
  }
64
38
 
@@ -92,42 +66,21 @@
92
66
 
93
67
  .semmet-navbar__list {
94
68
  display: grid;
95
- gap: var(--semmet-space-3xs);
96
69
  margin: 0;
97
- padding: var(--semmet-space-2xs) 0 0;
70
+ padding: 0;
98
71
  list-style: none;
99
72
  }
100
73
 
101
74
  .semmet-navbar__actions {
102
75
  display: flex;
103
76
  flex-wrap: wrap;
104
- gap: var(--semmet-space-2xs);
105
- padding-top: var(--semmet-space-xs);
106
77
  }
107
78
 
108
79
  .semmet-navbar__link {
109
80
  display: flex;
110
81
  align-items: center;
111
- min-height: var(--semmet-target-md);
112
- padding: var(--semmet-space-2xs) var(--semmet-space-xs);
113
- border-radius: var(--semmet-radius-md);
114
- color: var(--semmet-color-on-surface-variant);
115
- font-weight: 650;
82
+ color: inherit;
116
83
  text-decoration: none;
117
- transition:
118
- background-color var(--semmet-motion),
119
- color var(--semmet-motion),
120
- opacity var(--semmet-motion);
121
- }
122
-
123
- .semmet-navbar__link:hover:not(.semmet-navbar__link--disabled) {
124
- color: var(--semmet-color-on-surface);
125
- background: var(--semmet-color-surface-muted);
126
- }
127
-
128
- .semmet-navbar__link--current {
129
- color: var(--semmet-color-on-surface);
130
- background: var(--semmet-color-surface-muted);
131
84
  }
132
85
 
133
86
  .semmet-navbar__link--disabled {
@@ -139,14 +92,13 @@
139
92
  .semmet-navbar__toggle:focus-visible,
140
93
  .semmet-navbar__link:focus-visible,
141
94
  .semmet-navbar__actions :is(a, button):focus-visible {
142
- outline: 2px solid var(--semmet-color-primary);
95
+ outline: 2px solid currentColor;
143
96
  outline-offset: 2px;
144
97
  }
145
98
 
146
99
  @media (min-width: 48rem) {
147
100
  .semmet-navbar {
148
101
  grid-template-columns: auto 1fr;
149
- padding-inline: var(--semmet-space-2xs);
150
102
  }
151
103
 
152
104
  .semmet-navbar__toggle {
@@ -156,20 +108,12 @@
156
108
  .semmet-navbar__menu {
157
109
  display: flex;
158
110
  align-items: center;
159
- justify-content: flex-end;
160
- gap: var(--semmet-space-xs);
161
111
  grid-column: auto;
162
112
  }
163
113
 
164
114
  .semmet-navbar__list {
165
115
  display: flex;
166
116
  align-items: center;
167
- justify-content: flex-end;
168
- gap: var(--semmet-space-3xs);
169
117
  padding: 0;
170
118
  }
171
-
172
- .semmet-navbar__actions {
173
- padding-top: 0;
174
- }
175
119
  }
@@ -9,21 +9,36 @@
9
9
  "name": {
10
10
  "type": "string",
11
11
  "description": "The name for the new component. Used to derive the class name, selector, and file names.",
12
- "$default": { "$source": "argv", "index": 0 },
12
+ "$default": {
13
+ "$source": "argv",
14
+ "index": 0
15
+ },
13
16
  "x-prompt": "What name would you like to use for the navbar component?"
14
17
  },
18
+ "e2e": {
19
+ "type": "boolean",
20
+ "default": false,
21
+ "description": "Generate a Playwright e2e spec for this component. Requires Playwright to be installed/configured in the consuming app."
22
+ },
15
23
  "path": {
16
24
  "type": "string",
17
25
  "format": "path",
18
- "$default": { "$source": "workingDirectory" },
26
+ "$default": {
27
+ "$source": "workingDirectory"
28
+ },
19
29
  "description": "The path where the component files should be created, relative to the workspace root. Defaults to the project's source root.",
20
30
  "visible": false
21
31
  },
22
32
  "project": {
23
33
  "type": "string",
24
34
  "description": "The name of the project to add the component to.",
25
- "$default": { "$source": "projectName" }
35
+ "$default": {
36
+ "$source": "projectName"
37
+ }
26
38
  }
27
39
  },
28
- "required": ["name", "project"]
40
+ "required": [
41
+ "name",
42
+ "project"
43
+ ]
29
44
  }
@@ -1,25 +1,10 @@
1
1
  :host {
2
- --semmet-color-primary: #18181b;
3
- --semmet-color-surface: #ffffff;
4
- --semmet-color-on-surface: #18181b;
5
- --semmet-radius-sm: 8px;
6
- --semmet-radius-md: 12px;
7
- --semmet-space-3xs: 4px;
8
- --semmet-space-2xs: 8px;
9
- --semmet-space-xs: 16px;
10
- --semmet-target-md: 40px;
11
- --semmet-elevation-3: 0 8px 24px rgba(20, 24, 23, 0.18), 0 2px 8px rgba(20, 24, 23, 0.1);
12
- --semmet-motion: 160ms cubic-bezier(0.2, 0, 0, 1);
13
-
14
2
  display: block;
15
- font-family: Roboto, system-ui, -apple-system, 'Segoe UI', sans-serif;
16
- font-size: 0.9375rem;
17
3
  }
18
4
 
19
5
  nav > ul {
20
6
  display: flex;
21
7
  align-items: center;
22
- gap: var(--semmet-space-3xs);
23
8
  margin: 0;
24
9
  padding: 0;
25
10
  list-style: none;
@@ -33,28 +18,17 @@ a,
33
18
  button {
34
19
  display: inline-flex;
35
20
  align-items: center;
36
- gap: var(--semmet-space-2xs);
37
- min-height: var(--semmet-target-md);
38
21
  font: inherit;
39
- font-weight: 500;
40
- color: var(--semmet-color-on-surface);
22
+ color: inherit;
41
23
  background: none;
42
24
  border: none;
43
- border-radius: var(--semmet-radius-sm);
44
- padding: var(--semmet-space-2xs) var(--semmet-space-xs);
45
25
  cursor: pointer;
46
26
  text-decoration: none;
47
- transition: background-color var(--semmet-motion);
48
- }
49
-
50
- a:hover,
51
- button:hover {
52
- background: color-mix(in srgb, var(--semmet-color-on-surface) 6%, transparent);
53
27
  }
54
28
 
55
29
  a:focus-visible,
56
30
  button:focus-visible {
57
- outline: 2px solid var(--semmet-color-primary);
31
+ outline: 2px solid currentColor;
58
32
  outline-offset: 2px;
59
33
  }
60
34
 
@@ -62,10 +36,9 @@ button::after {
62
36
  content: '';
63
37
  width: 0.4rem;
64
38
  height: 0.4rem;
65
- border-right: 2px solid var(--semmet-color-on-surface);
66
- border-bottom: 2px solid var(--semmet-color-on-surface);
39
+ border-right: 2px solid currentColor;
40
+ border-bottom: 2px solid currentColor;
67
41
  transform: rotate(45deg);
68
- transition: transform var(--semmet-motion);
69
42
  }
70
43
 
71
44
  button[aria-expanded='true']::after {
@@ -77,13 +50,9 @@ nav > ul ul {
77
50
  z-index: 1;
78
51
  top: 100%;
79
52
  left: 0;
80
- min-width: 12rem;
81
- margin: var(--semmet-space-3xs) 0 0;
82
- padding: var(--semmet-space-2xs);
53
+ margin: 0;
54
+ padding: 0;
83
55
  list-style: none;
84
- background: var(--semmet-color-surface);
85
- border-radius: var(--semmet-radius-md);
86
- box-shadow: var(--semmet-elevation-3);
87
56
  }
88
57
 
89
58
  nav > ul ul li a {
@@ -3,12 +3,12 @@
3
3
  Usage from a parent component template:
4
4
  Import <%= classify(name) %> in that parent component.
5
5
 
6
- <<%= selector %> />
6
+ <<%= selector %> label="Main" />
7
7
  -->
8
8
  <!-- Deliberately avoids the ARIA menu/menuitem roles — APG reserves those for app-style menus. -->
9
- <nav aria-label="Main">
9
+ <nav [attr.aria-label]="label()">
10
10
  <ul>
11
- <li><a href="/">Home</a></li>
11
+ <li><a [href]="homeHref()">{{ homeLabel() }}</a></li>
12
12
  <li>
13
13
  <button
14
14
  type="button"
@@ -17,11 +17,12 @@ Import <%= classify(name) %> in that parent component.
17
17
  [id]="instanceId + '-button'"
18
18
  (click)="toggleSubmenu()"
19
19
  >
20
- Products
20
+ {{ submenuLabel() }}
21
21
  </button>
22
22
  <ul [id]="instanceId + '-submenu'" [attr.aria-labelledby]="instanceId + '-button'" [hidden]="!expanded()">
23
- <li><a href="/products/first">First product</a></li>
24
- <li><a href="/products/second">Second product</a></li>
23
+ @for (link of submenuLinks(); track link.href) {
24
+ <li><a [href]="link.href">{{ link.label }}</a></li>
25
+ }
25
26
  </ul>
26
27
  </li>
27
28
  </ul>
@@ -1,4 +1,9 @@
1
- import { Component, signal } from '@angular/core';
1
+ import { Component, input, signal } from '@angular/core';
2
+
3
+ interface <%= classify(name) %>Link {
4
+ label: string;
5
+ href: string;
6
+ }
2
7
 
3
8
  let nextId = 0;
4
9
 
@@ -12,6 +17,15 @@ export class <%= classify(name) %> {
12
17
  protected readonly instanceId = `<%= dasherize(name) %>-${nextId++}`;
13
18
  protected readonly expanded = signal(false);
14
19
 
20
+ readonly label = input('Main');
21
+ readonly homeLabel = input('Home');
22
+ readonly homeHref = input('/');
23
+ readonly submenuLabel = input('Products');
24
+ readonly submenuLinks = input<readonly <%= classify(name) %>Link[]>([
25
+ { label: 'First product', href: '/products/first' },
26
+ { label: 'Second product', href: '/products/second' },
27
+ ]);
28
+
15
29
  protected toggleSubmenu(): void {
16
30
  this.expanded.update((value) => !value);
17
31
  }
@@ -9,21 +9,36 @@
9
9
  "name": {
10
10
  "type": "string",
11
11
  "description": "The name for the new component. Used to derive the class name, selector, and file names.",
12
- "$default": { "$source": "argv", "index": 0 },
12
+ "$default": {
13
+ "$source": "argv",
14
+ "index": 0
15
+ },
13
16
  "x-prompt": "What name would you like to use for the navigation menu component?"
14
17
  },
18
+ "e2e": {
19
+ "type": "boolean",
20
+ "default": false,
21
+ "description": "Generate a Playwright e2e spec for this component. Requires Playwright to be installed/configured in the consuming app."
22
+ },
15
23
  "path": {
16
24
  "type": "string",
17
25
  "format": "path",
18
- "$default": { "$source": "workingDirectory" },
26
+ "$default": {
27
+ "$source": "workingDirectory"
28
+ },
19
29
  "description": "The path where the component files should be created, relative to the workspace root. Defaults to the project's source root.",
20
30
  "visible": false
21
31
  },
22
32
  "project": {
23
33
  "type": "string",
24
34
  "description": "The name of the project to add the component to.",
25
- "$default": { "$source": "projectName" }
35
+ "$default": {
36
+ "$source": "projectName"
37
+ }
26
38
  }
27
39
  },
28
- "required": ["name", "project"]
40
+ "required": [
41
+ "name",
42
+ "project"
43
+ ]
29
44
  }
@@ -1,3 +1,3 @@
1
1
  import { Rule } from '@angular-devkit/schematics';
2
2
  import { Schema } from './schema';
3
- export declare function ngAdd(options: Schema): Rule;
3
+ export declare function ngAdd(_options: Schema): Rule;
@@ -1,40 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ngAdd = ngAdd;
4
- const schematics_1 = require("@angular-devkit/schematics");
5
- const tasks_1 = require("@angular-devkit/schematics/tasks");
6
- const PLAYWRIGHT_VERSION = '^1.61.1';
7
- const TYPES_NODE_VERSION = '^20.11.0';
8
- function ngAdd(options) {
9
- const skipRule = () => undefined;
10
- return (0, schematics_1.chain)([
11
- options.skipE2e ? skipRule : addPlaywrightDependency,
12
- options.skipE2e ? skipRule : addPackageScripts,
13
- addDeliveryVerificationScript,
14
- options.skipE2e ? skipRule : addPlaywrightConfig,
15
- options.skipE2e ? skipRule : installPackages,
16
- ]);
17
- }
18
- function addPlaywrightDependency(tree) {
19
- const packageJson = readJson(tree, '/package.json');
20
- const devDependencies = packageJson.devDependencies ?? {};
21
- packageJson.devDependencies = {
22
- ...devDependencies,
23
- '@playwright/test': devDependencies['@playwright/test'] ?? PLAYWRIGHT_VERSION,
24
- '@types/node': devDependencies['@types/node'] ?? TYPES_NODE_VERSION,
25
- };
26
- writeJson(tree, '/package.json', packageJson);
27
- }
28
- function addPackageScripts(tree) {
29
- const packageJson = readJson(tree, '/package.json');
30
- const scripts = packageJson.scripts ?? {};
31
- packageJson.scripts = {
32
- ...scripts,
33
- e2e: scripts.e2e ?? 'playwright test',
34
- 'e2e:ui': scripts['e2e:ui'] ?? 'playwright test --ui',
35
- 'e2e:report': scripts['e2e:report'] ?? 'playwright show-report',
36
- };
37
- writeJson(tree, '/package.json', packageJson);
4
+ function ngAdd(_options) {
5
+ return addDeliveryVerificationScript;
38
6
  }
39
7
  function addDeliveryVerificationScript(tree) {
40
8
  const packageJson = readJson(tree, '/package.json');
@@ -57,44 +25,6 @@ function addDeliveryVerificationScript(tree) {
57
25
  };
58
26
  writeJson(tree, '/package.json', packageJson);
59
27
  }
60
- function addPlaywrightConfig(tree) {
61
- if (tree.exists('/playwright.config.ts')) {
62
- return;
63
- }
64
- tree.create('/playwright.config.ts', `/// <reference types="node" />
65
-
66
- import { defineConfig, devices } from '@playwright/test';
67
-
68
- export default defineConfig({
69
- testDir: './src',
70
- testMatch: '**/*.e2e-spec.ts',
71
- fullyParallel: true,
72
- forbidOnly: !!process.env['CI'],
73
- retries: process.env['CI'] ? 2 : 0,
74
- workers: process.env['CI'] ? 1 : undefined,
75
- reporter: 'html',
76
- use: {
77
- baseURL: 'http://localhost:4200',
78
- trace: 'on-first-retry',
79
- },
80
- webServer: {
81
- command: 'npm run start',
82
- url: 'http://localhost:4200',
83
- reuseExistingServer: !process.env['CI'],
84
- timeout: 120 * 1000,
85
- },
86
- projects: [
87
- {
88
- name: 'chromium',
89
- use: { ...devices['Desktop Chrome'] },
90
- },
91
- ],
92
- });
93
- `);
94
- }
95
- function installPackages(_tree, context) {
96
- context.addTask(new tasks_1.NodePackageInstallTask());
97
- }
98
28
  function readJson(tree, path) {
99
29
  const content = tree.readText(path);
100
30
  return JSON.parse(content);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;AAGA,sBAEC;AAFD,SAAgB,KAAK,CAAC,QAAgB;IACpC,OAAO,6BAA6B,CAAC;AACvC,CAAC;AAED,SAAS,6BAA6B,CAAC,IAAU;IAC/C,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;IACpD,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,IAAI,EAAE,CAAC;IAE1C,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,OAAO;IACT,CAAC;IAED,MAAM,cAAc,GAAG;QACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,SAAS;QACtD,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS;QACvC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS;QAC3C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS;KAC1C,CAAC,MAAM,CAAC,CAAC,OAAO,EAAqB,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;IAE3D,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChC,OAAO;IACT,CAAC;IAED,WAAW,CAAC,OAAO,GAAG;QACpB,GAAG,OAAO;QACV,MAAM,EAAE,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC;KACpC,CAAC;IAEF,SAAS,CAAC,IAAI,EAAE,eAAe,EAAE,WAAW,CAAC,CAAC;AAChD,CAAC;AAED,SAAS,QAAQ,CAAC,IAAU,EAAE,IAAY;IACxC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACpC,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAwB,CAAC;AACpD,CAAC;AAED,SAAS,SAAS,CAAC,IAAU,EAAE,IAAY,EAAE,KAA0B;IACrE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AAC9D,CAAC"}
@@ -1,47 +1,8 @@
1
- import { Rule, SchematicContext, Tree, chain } from '@angular-devkit/schematics';
2
- import { NodePackageInstallTask } from '@angular-devkit/schematics/tasks';
1
+ import { Rule, Tree } from '@angular-devkit/schematics';
3
2
  import { Schema } from './schema';
4
3
 
5
- const PLAYWRIGHT_VERSION = '^1.61.1';
6
- const TYPES_NODE_VERSION = '^20.11.0';
7
-
8
- export function ngAdd(options: Schema): Rule {
9
- const skipRule: Rule = () => undefined;
10
-
11
- return chain([
12
- options.skipE2e ? skipRule : addPlaywrightDependency,
13
- options.skipE2e ? skipRule : addPackageScripts,
14
- addDeliveryVerificationScript,
15
- options.skipE2e ? skipRule : addPlaywrightConfig,
16
- options.skipE2e ? skipRule : installPackages,
17
- ]);
18
- }
19
-
20
- function addPlaywrightDependency(tree: Tree): void {
21
- const packageJson = readJson(tree, '/package.json');
22
- const devDependencies = packageJson.devDependencies ?? {};
23
-
24
- packageJson.devDependencies = {
25
- ...devDependencies,
26
- '@playwright/test': devDependencies['@playwright/test'] ?? PLAYWRIGHT_VERSION,
27
- '@types/node': devDependencies['@types/node'] ?? TYPES_NODE_VERSION,
28
- };
29
-
30
- writeJson(tree, '/package.json', packageJson);
31
- }
32
-
33
- function addPackageScripts(tree: Tree): void {
34
- const packageJson = readJson(tree, '/package.json');
35
- const scripts = packageJson.scripts ?? {};
36
-
37
- packageJson.scripts = {
38
- ...scripts,
39
- e2e: scripts.e2e ?? 'playwright test',
40
- 'e2e:ui': scripts['e2e:ui'] ?? 'playwright test --ui',
41
- 'e2e:report': scripts['e2e:report'] ?? 'playwright show-report',
42
- };
43
-
44
- writeJson(tree, '/package.json', packageJson);
4
+ export function ngAdd(_options: Schema): Rule {
5
+ return addDeliveryVerificationScript;
45
6
  }
46
7
 
47
8
  function addDeliveryVerificationScript(tree: Tree): void {
@@ -71,50 +32,6 @@ function addDeliveryVerificationScript(tree: Tree): void {
71
32
  writeJson(tree, '/package.json', packageJson);
72
33
  }
73
34
 
74
- function addPlaywrightConfig(tree: Tree): void {
75
- if (tree.exists('/playwright.config.ts')) {
76
- return;
77
- }
78
-
79
- tree.create(
80
- '/playwright.config.ts',
81
- `/// <reference types="node" />
82
-
83
- import { defineConfig, devices } from '@playwright/test';
84
-
85
- export default defineConfig({
86
- testDir: './src',
87
- testMatch: '**/*.e2e-spec.ts',
88
- fullyParallel: true,
89
- forbidOnly: !!process.env['CI'],
90
- retries: process.env['CI'] ? 2 : 0,
91
- workers: process.env['CI'] ? 1 : undefined,
92
- reporter: 'html',
93
- use: {
94
- baseURL: 'http://localhost:4200',
95
- trace: 'on-first-retry',
96
- },
97
- webServer: {
98
- command: 'npm run start',
99
- url: 'http://localhost:4200',
100
- reuseExistingServer: !process.env['CI'],
101
- timeout: 120 * 1000,
102
- },
103
- projects: [
104
- {
105
- name: 'chromium',
106
- use: { ...devices['Desktop Chrome'] },
107
- },
108
- ],
109
- });
110
- `
111
- );
112
- }
113
-
114
- function installPackages(_tree: Tree, context: SchematicContext): void {
115
- context.addTask(new NodePackageInstallTask());
116
- }
117
-
118
35
  function readJson(tree: Tree, path: string): Record<string, any> {
119
36
  const content = tree.readText(path);
120
37
  return JSON.parse(content) as Record<string, any>;
@@ -1,5 +1,4 @@
1
1
  export interface Schema {
2
2
  project?: string;
3
3
  saveDev?: boolean;
4
- skipE2e?: boolean;
5
4
  }
@@ -11,11 +11,6 @@
11
11
  "description": "The name of the project to configure.",
12
12
  "$default": { "$source": "projectName" }
13
13
  },
14
- "skipE2e": {
15
- "type": "boolean",
16
- "default": false,
17
- "description": "Skip Playwright e2e setup."
18
- },
19
14
  "saveDev": {
20
15
  "type": "boolean",
21
16
  "default": false,
@@ -1,5 +1,4 @@
1
1
  export interface Schema {
2
2
  project?: string;
3
3
  saveDev?: boolean;
4
- skipE2e?: boolean;
5
4
  }