@smartsoft001-mobilems/claude-plugins 2.91.0 → 2.93.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/package.json +1 -1
- package/plugins/mobilems/.claude-plugin/plugin.json +1 -1
- package/plugins/mobilems/skills/mobilems-articles/references/module-and-routes.md +7 -2
- package/plugins/mobilems/skills/mobilems-articles/scripts/verify-module.sh +9 -0
- package/plugins/mobilems/skills/mobilems-events/references/module-and-routes.md +7 -2
- package/plugins/mobilems/skills/mobilems-events/scripts/verify-module.sh +9 -0
- package/plugins/mobilems/skills/mobilems-object-collections/references/module-and-routes.md +7 -4
- package/plugins/mobilems/skills/mobilems-object-collections/scripts/verify-module.sh +9 -0
- package/plugins/mobilems/skills/mobilems-objects/references/module-and-routes.md +7 -2
- package/plugins/mobilems/skills/mobilems-objects/scripts/verify-module.sh +9 -0
- package/plugins/mobilems/skills/mobilems-partners/references/module-and-routes.md +7 -2
- package/plugins/mobilems/skills/mobilems-partners/scripts/verify-module.sh +9 -0
- package/plugins/mobilems/skills/mobilems-thematic-publications/references/module-and-routes.md +7 -4
- package/plugins/mobilems/skills/mobilems-thematic-publications/scripts/verify-module.sh +9 -0
package/package.json
CHANGED
|
@@ -73,14 +73,19 @@ The list page renders the grid like this — copy this shape, it is the required
|
|
|
73
73
|
<ng-template #masonryContentTpl>
|
|
74
74
|
<div class="masonry-grid-sizer"></div>
|
|
75
75
|
@for (item of list(); track item.id) {
|
|
76
|
-
<
|
|
76
|
+
<smart-<name>-grid-item [item]="item" />
|
|
77
77
|
}
|
|
78
78
|
</ng-template>
|
|
79
79
|
</smart-mobilems-masonry-grid>
|
|
80
80
|
```
|
|
81
81
|
|
|
82
82
|
`.masonry-grid-sizer` and `.masonry-item` are required — they are the component's default
|
|
83
|
-
`columnWidth` / `itemSelector`. The
|
|
83
|
+
`columnWidth` / `itemSelector`. The grid item CARRIES `masonry-item` on its own root element (host class — exactly like
|
|
84
|
+
`news-grid-item` / `objects-grid-item` in the template's shared components; for a module-local
|
|
85
|
+
card, put `class="masonry-item ..."` on the card's root yourself). **NEVER wrap a card in an
|
|
86
|
+
extra `<div class="masonry-item">`** — masonry itemizes matching descendants too, so the card
|
|
87
|
+
would be laid out twice, collapse to a fraction of the column width and overlap its neighbours
|
|
88
|
+
(this exact defect scored I6b=40 in benchmark batch H s3). The card (shared-components.md) is the only module-specific part. Inputs,
|
|
84
89
|
public methods and the SSR provider are documented in the framework catalog,
|
|
85
90
|
[`packages/shared/angular/README.md`](https://github.com/smartsoft001/mobilems-framework/blob/main/packages/shared/angular/README.md#masonrygridcomponent)
|
|
86
91
|
(installed as `node_modules/@smartsoft001-mobilems/angular/README.md`).
|
|
@@ -86,6 +86,15 @@ if [ -n "$LISTP" ]; then
|
|
|
86
86
|
bad "list page does not render <smart-mobilems-masonry-grid> (README.md#masonrygridcomponent)"
|
|
87
87
|
fi
|
|
88
88
|
fi
|
|
89
|
+
# 3b. cards carry .masonry-item on their OWN root — wrapping them in another
|
|
90
|
+
# .masonry-item element makes masonry itemize BOTH (fizzy-ui-utils matches
|
|
91
|
+
# descendants too): the inner card goes position:absolute inside the outer one
|
|
92
|
+
# and collapses to a fraction of the column width (batch H s3, gate I6b=40).
|
|
93
|
+
if [ -n "$LISTP" ] && grep -rqE '<div[^>]*class="[^"]*masonry-item' $LISTP 2>/dev/null; then
|
|
94
|
+
bad "list page template wraps cards in <div class=\"masonry-item\"> — the card carries the class itself; render it directly"
|
|
95
|
+
else
|
|
96
|
+
pass "no nested .masonry-item wrappers"
|
|
97
|
+
fi
|
|
89
98
|
# 4. filters must EXTEND the framework base class — `context.` alone proves nothing, and a
|
|
90
99
|
# differently-named dir must not silently skip the check
|
|
91
100
|
FILT="$(find "$LIBDIR/components" -maxdepth 1 -type d \( -name 'filters*' -o -name 'search*' -o -name 'facet*' \) 2>/dev/null || true)"
|
|
@@ -101,14 +101,19 @@ The list page renders the grid like this — copy this shape, it is the required
|
|
|
101
101
|
<ng-template #masonryContentTpl>
|
|
102
102
|
<div class="masonry-grid-sizer"></div>
|
|
103
103
|
@for (item of list(); track item.id) {
|
|
104
|
-
<
|
|
104
|
+
<app-events-grid-item [item]="item" />
|
|
105
105
|
}
|
|
106
106
|
</ng-template>
|
|
107
107
|
</smart-mobilems-masonry-grid>
|
|
108
108
|
```
|
|
109
109
|
|
|
110
110
|
`.masonry-grid-sizer` and `.masonry-item` are required — they are the component's default
|
|
111
|
-
`columnWidth` / `itemSelector`. The
|
|
111
|
+
`columnWidth` / `itemSelector`. The grid item CARRIES `masonry-item` on its own root element (host class — exactly like
|
|
112
|
+
`news-grid-item` / `objects-grid-item` in the template's shared components; for a module-local
|
|
113
|
+
card, put `class="masonry-item ..."` on the card's root yourself). **NEVER wrap a card in an
|
|
114
|
+
extra `<div class="masonry-item">`** — masonry itemizes matching descendants too, so the card
|
|
115
|
+
would be laid out twice, collapse to a fraction of the column width and overlap its neighbours
|
|
116
|
+
(this exact defect scored I6b=40 in benchmark batch H s3). The card (lib-contents.md) is the only module-specific part. Inputs,
|
|
112
117
|
public methods and the SSR provider are documented in the framework catalog,
|
|
113
118
|
[`packages/shared/angular/README.md`](https://github.com/smartsoft001/mobilems-framework/blob/main/packages/shared/angular/README.md#masonrygridcomponent)
|
|
114
119
|
(installed as `node_modules/@smartsoft001-mobilems/angular/README.md`).
|
|
@@ -83,6 +83,15 @@ if [ -n "$LISTP" ]; then
|
|
|
83
83
|
bad "list page does not render <smart-mobilems-masonry-grid> (README.md#masonrygridcomponent)"
|
|
84
84
|
fi
|
|
85
85
|
fi
|
|
86
|
+
# 3b. cards carry .masonry-item on their OWN root — wrapping them in another
|
|
87
|
+
# .masonry-item element makes masonry itemize BOTH (fizzy-ui-utils matches
|
|
88
|
+
# descendants too): the inner card goes position:absolute inside the outer one
|
|
89
|
+
# and collapses to a fraction of the column width (batch H s3, gate I6b=40).
|
|
90
|
+
if [ -n "$LISTP" ] && grep -rqE '<div[^>]*class="[^"]*masonry-item' $LISTP 2>/dev/null; then
|
|
91
|
+
bad "list page template wraps cards in <div class=\"masonry-item\"> — the card carries the class itself; render it directly"
|
|
92
|
+
else
|
|
93
|
+
pass "no nested .masonry-item wrappers"
|
|
94
|
+
fi
|
|
86
95
|
# 4. filters must EXTEND the framework base class — `context.` alone proves nothing, and a
|
|
87
96
|
# differently-named dir must not silently skip the check
|
|
88
97
|
FILT="$(find "$LIBDIR/components" -maxdepth 1 -type d \( -name 'filters*' -o -name 'search*' -o -name 'facet*' \) 2>/dev/null || true)"
|
|
@@ -80,16 +80,19 @@ The list page renders the grid like this — copy this shape, it is the required
|
|
|
80
80
|
<ng-template #masonryContentTpl>
|
|
81
81
|
<div class="masonry-grid-sizer"></div>
|
|
82
82
|
@for (item of list(); track item.id) {
|
|
83
|
-
<
|
|
84
|
-
<smart-collections-grid-item [item]="item" />
|
|
85
|
-
</div>
|
|
83
|
+
<smart-collections-grid-item [item]="item" />
|
|
86
84
|
}
|
|
87
85
|
</ng-template>
|
|
88
86
|
</smart-mobilems-masonry-grid>
|
|
89
87
|
```
|
|
90
88
|
|
|
91
89
|
`.masonry-grid-sizer` and `.masonry-item` are required — they are the component's default
|
|
92
|
-
`columnWidth` / `itemSelector`. The
|
|
90
|
+
`columnWidth` / `itemSelector`. The grid item CARRIES `masonry-item` on its own root element (host class — exactly like
|
|
91
|
+
`news-grid-item` / `objects-grid-item` in the template's shared components; for a module-local
|
|
92
|
+
card, put `class="masonry-item ..."` on the card's root yourself). **NEVER wrap a card in an
|
|
93
|
+
extra `<div class="masonry-item">`** — masonry itemizes matching descendants too, so the card
|
|
94
|
+
would be laid out twice, collapse to a fraction of the column width and overlap its neighbours
|
|
95
|
+
(this exact defect scored I6b=40 in benchmark batch H s3). The card (shared-components.md) is the only module-specific part. Inputs,
|
|
93
96
|
public methods and the SSR provider are documented in the framework catalog,
|
|
94
97
|
[`packages/shared/angular/README.md`](https://github.com/smartsoft001/mobilems-framework/blob/main/packages/shared/angular/README.md#masonrygridcomponent)
|
|
95
98
|
(installed as `node_modules/@smartsoft001-mobilems/angular/README.md`).
|
|
@@ -70,6 +70,15 @@ if [ -n "$ITEMP" ]; then
|
|
|
70
70
|
bad "item page does not render <smart-mobilems-masonry-grid> (README.md#masonrygridcomponent)"
|
|
71
71
|
fi
|
|
72
72
|
fi
|
|
73
|
+
# 3b. cards carry .masonry-item on their OWN root — wrapping them in another
|
|
74
|
+
# .masonry-item element makes masonry itemize BOTH (fizzy-ui-utils matches
|
|
75
|
+
# descendants too): the inner card goes position:absolute inside the outer one
|
|
76
|
+
# and collapses to a fraction of the column width (batch H s3, gate I6b=40).
|
|
77
|
+
if [ -n "$ITEMP" ] && grep -rqE '<div[^>]*class="[^"]*masonry-item' $ITEMP 2>/dev/null; then
|
|
78
|
+
bad "item page template wraps cards in <div class=\"masonry-item\"> — the card carries the class itself; render it directly"
|
|
79
|
+
else
|
|
80
|
+
pass "no nested .masonry-item wrappers"
|
|
81
|
+
fi
|
|
73
82
|
# 4. filters must EXTEND the framework base class — `context.` alone proves nothing, and a
|
|
74
83
|
# differently-named dir must not silently skip the check
|
|
75
84
|
FILT="$(find "$LIBDIR/components" -maxdepth 1 -type d \( -name 'filters*' -o -name 'search*' -o -name 'facet*' \) 2>/dev/null || true)"
|
|
@@ -74,14 +74,19 @@ The list page renders the grid like this — copy this shape, it is the required
|
|
|
74
74
|
<ng-template #masonryContentTpl>
|
|
75
75
|
<div class="masonry-grid-sizer"></div>
|
|
76
76
|
@for (item of list(); track item.id) {
|
|
77
|
-
<
|
|
77
|
+
<smart-objects-grid-item [item]="item" />
|
|
78
78
|
}
|
|
79
79
|
</ng-template>
|
|
80
80
|
</smart-mobilems-masonry-grid>
|
|
81
81
|
```
|
|
82
82
|
|
|
83
83
|
`.masonry-grid-sizer` and `.masonry-item` are required — they are the component's default
|
|
84
|
-
`columnWidth` / `itemSelector`. The
|
|
84
|
+
`columnWidth` / `itemSelector`. The grid item CARRIES `masonry-item` on its own root element (host class — exactly like
|
|
85
|
+
`news-grid-item` / `objects-grid-item` in the template's shared components; for a module-local
|
|
86
|
+
card, put `class="masonry-item ..."` on the card's root yourself). **NEVER wrap a card in an
|
|
87
|
+
extra `<div class="masonry-item">`** — masonry itemizes matching descendants too, so the card
|
|
88
|
+
would be laid out twice, collapse to a fraction of the column width and overlap its neighbours
|
|
89
|
+
(this exact defect scored I6b=40 in benchmark batch H s3). The card (shared-components.md) is the only module-specific part. Inputs,
|
|
85
90
|
public methods and the SSR provider are documented in the framework catalog,
|
|
86
91
|
[`packages/shared/angular/README.md`](https://github.com/smartsoft001/mobilems-framework/blob/main/packages/shared/angular/README.md#masonrygridcomponent)
|
|
87
92
|
(installed as `node_modules/@smartsoft001-mobilems/angular/README.md`).
|
|
@@ -76,6 +76,15 @@ if [ -n "$LISTP" ]; then
|
|
|
76
76
|
bad "list page does not render <smart-mobilems-masonry-grid> (README.md#masonrygridcomponent)"
|
|
77
77
|
fi
|
|
78
78
|
fi
|
|
79
|
+
# 3b. cards carry .masonry-item on their OWN root — wrapping them in another
|
|
80
|
+
# .masonry-item element makes masonry itemize BOTH (fizzy-ui-utils matches
|
|
81
|
+
# descendants too): the inner card goes position:absolute inside the outer one
|
|
82
|
+
# and collapses to a fraction of the column width (batch H s3, gate I6b=40).
|
|
83
|
+
if [ -n "$LISTP" ] && grep -rqE '<div[^>]*class="[^"]*masonry-item' $LISTP 2>/dev/null; then
|
|
84
|
+
bad "list page template wraps cards in <div class=\"masonry-item\"> — the card carries the class itself; render it directly"
|
|
85
|
+
else
|
|
86
|
+
pass "no nested .masonry-item wrappers"
|
|
87
|
+
fi
|
|
79
88
|
# 4. filters must EXTEND the framework base class — `context.` alone proves nothing, and a
|
|
80
89
|
# differently-named dir must not silently skip the check
|
|
81
90
|
FILT="$(find "$LIBDIR/components" -maxdepth 1 -type d \( -name 'filters*' -o -name 'search*' -o -name 'facet*' \) 2>/dev/null || true)"
|
|
@@ -78,14 +78,19 @@ The list page renders the grid like this — copy this shape, it is the required
|
|
|
78
78
|
<ng-template #masonryContentTpl>
|
|
79
79
|
<div class="masonry-grid-sizer"></div>
|
|
80
80
|
@for (item of list(); track item.id) {
|
|
81
|
-
<
|
|
81
|
+
<app-partners-grid-item [item]="item" />
|
|
82
82
|
}
|
|
83
83
|
</ng-template>
|
|
84
84
|
</smart-mobilems-masonry-grid>
|
|
85
85
|
```
|
|
86
86
|
|
|
87
87
|
`.masonry-grid-sizer` and `.masonry-item` are required — they are the component's default
|
|
88
|
-
`columnWidth` / `itemSelector`. The
|
|
88
|
+
`columnWidth` / `itemSelector`. The grid item CARRIES `masonry-item` on its own root element (host class — exactly like
|
|
89
|
+
`news-grid-item` / `objects-grid-item` in the template's shared components; for a module-local
|
|
90
|
+
card, put `class="masonry-item ..."` on the card's root yourself). **NEVER wrap a card in an
|
|
91
|
+
extra `<div class="masonry-item">`** — masonry itemizes matching descendants too, so the card
|
|
92
|
+
would be laid out twice, collapse to a fraction of the column width and overlap its neighbours
|
|
93
|
+
(this exact defect scored I6b=40 in benchmark batch H s3). The card (lib-contents.md) is the only module-specific part. Inputs,
|
|
89
94
|
public methods and the SSR provider are documented in the framework catalog,
|
|
90
95
|
[`packages/shared/angular/README.md`](https://github.com/smartsoft001/mobilems-framework/blob/main/packages/shared/angular/README.md#masonrygridcomponent)
|
|
91
96
|
(installed as `node_modules/@smartsoft001-mobilems/angular/README.md`).
|
|
@@ -84,6 +84,15 @@ if [ -n "$LISTP" ]; then
|
|
|
84
84
|
bad "list page does not render <smart-mobilems-masonry-grid> (README.md#masonrygridcomponent)"
|
|
85
85
|
fi
|
|
86
86
|
fi
|
|
87
|
+
# 3b. cards carry .masonry-item on their OWN root — wrapping them in another
|
|
88
|
+
# .masonry-item element makes masonry itemize BOTH (fizzy-ui-utils matches
|
|
89
|
+
# descendants too): the inner card goes position:absolute inside the outer one
|
|
90
|
+
# and collapses to a fraction of the column width (batch H s3, gate I6b=40).
|
|
91
|
+
if [ -n "$LISTP" ] && grep -rqE '<div[^>]*class="[^"]*masonry-item' $LISTP 2>/dev/null; then
|
|
92
|
+
bad "list page template wraps cards in <div class=\"masonry-item\"> — the card carries the class itself; render it directly"
|
|
93
|
+
else
|
|
94
|
+
pass "no nested .masonry-item wrappers"
|
|
95
|
+
fi
|
|
87
96
|
# 4. filters must EXTEND the framework base class — `context.` alone proves nothing, and a
|
|
88
97
|
# differently-named dir must not silently skip the check
|
|
89
98
|
FILT="$(find "$LIBDIR/components" -maxdepth 1 -type d \( -name 'filters*' -o -name 'search*' -o -name 'facet*' \) 2>/dev/null || true)"
|
package/plugins/mobilems/skills/mobilems-thematic-publications/references/module-and-routes.md
CHANGED
|
@@ -81,16 +81,19 @@ The list page renders the grid like this — copy this shape, it is the required
|
|
|
81
81
|
<ng-template #masonryContentTpl>
|
|
82
82
|
<div class="masonry-grid-sizer"></div>
|
|
83
83
|
@for (item of list(); track item.id) {
|
|
84
|
-
<
|
|
85
|
-
<app-thematic-paths-list-item [item]="item" />
|
|
86
|
-
</div>
|
|
84
|
+
<app-thematic-paths-list-item [item]="item" />
|
|
87
85
|
}
|
|
88
86
|
</ng-template>
|
|
89
87
|
</smart-mobilems-masonry-grid>
|
|
90
88
|
```
|
|
91
89
|
|
|
92
90
|
`.masonry-grid-sizer` and `.masonry-item` are required — they are the component's default
|
|
93
|
-
`columnWidth` / `itemSelector`. The
|
|
91
|
+
`columnWidth` / `itemSelector`. The grid item CARRIES `masonry-item` on its own root element (host class — exactly like
|
|
92
|
+
`news-grid-item` / `objects-grid-item` in the template's shared components; for a module-local
|
|
93
|
+
card, put `class="masonry-item ..."` on the card's root yourself). **NEVER wrap a card in an
|
|
94
|
+
extra `<div class="masonry-item">`** — masonry itemizes matching descendants too, so the card
|
|
95
|
+
would be laid out twice, collapse to a fraction of the column width and overlap its neighbours
|
|
96
|
+
(this exact defect scored I6b=40 in benchmark batch H s3). The card (lib-contents.md) is the only module-specific part. Inputs,
|
|
94
97
|
public methods and the SSR provider are documented in the framework catalog,
|
|
95
98
|
[`packages/shared/angular/README.md`](https://github.com/smartsoft001/mobilems-framework/blob/main/packages/shared/angular/README.md#masonrygridcomponent)
|
|
96
99
|
(installed as `node_modules/@smartsoft001-mobilems/angular/README.md`).
|
|
@@ -80,6 +80,15 @@ if [ -n "$LISTP" ]; then
|
|
|
80
80
|
bad "list page does not render <smart-mobilems-masonry-grid> (README.md#masonrygridcomponent)"
|
|
81
81
|
fi
|
|
82
82
|
fi
|
|
83
|
+
# 3b. cards carry .masonry-item on their OWN root — wrapping them in another
|
|
84
|
+
# .masonry-item element makes masonry itemize BOTH (fizzy-ui-utils matches
|
|
85
|
+
# descendants too): the inner card goes position:absolute inside the outer one
|
|
86
|
+
# and collapses to a fraction of the column width (batch H s3, gate I6b=40).
|
|
87
|
+
if [ -n "$LISTP" ] && grep -rqE '<div[^>]*class="[^"]*masonry-item' $LISTP 2>/dev/null; then
|
|
88
|
+
bad "list page template wraps cards in <div class=\"masonry-item\"> — the card carries the class itself; render it directly"
|
|
89
|
+
else
|
|
90
|
+
pass "no nested .masonry-item wrappers"
|
|
91
|
+
fi
|
|
83
92
|
# 4. filters must EXTEND the framework base class — `context.` alone proves nothing, and a
|
|
84
93
|
# differently-named dir must not silently skip the check
|
|
85
94
|
FILT="$(find "$LIBDIR/components" -maxdepth 1 -type d \( -name 'filters*' -o -name 'search*' -o -name 'facet*' \) 2>/dev/null || true)"
|