@xsmusices/ui 1.41.0 → 1.42.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/README.md +4 -18
- package/fesm2022/xsmusices-ui-country-flag.xsstory-BPTu5b4i.mjs +84 -0
- package/fesm2022/xsmusices-ui-country-flag.xsstory-BPTu5b4i.mjs.map +1 -0
- package/fesm2022/xsmusices-ui-country-name.xsstory-ENhKrPTw.mjs +106 -0
- package/fesm2022/xsmusices-ui-country-name.xsstory-ENhKrPTw.mjs.map +1 -0
- package/fesm2022/xsmusices-ui-date-chat.xsstory-BBAJebr1.mjs +75 -0
- package/fesm2022/xsmusices-ui-date-chat.xsstory-BBAJebr1.mjs.map +1 -0
- package/fesm2022/xsmusices-ui-date-format.xsstory-Chrcn1yu.mjs +69 -0
- package/fesm2022/xsmusices-ui-date-format.xsstory-Chrcn1yu.mjs.map +1 -0
- package/fesm2022/xsmusices-ui-date-long.xsstory-CkYL5e1z.mjs +67 -0
- package/fesm2022/xsmusices-ui-date-long.xsstory-CkYL5e1z.mjs.map +1 -0
- package/fesm2022/xsmusices-ui-first-letter-case.xsstory-BJDtnUwE.mjs +49 -0
- package/fesm2022/xsmusices-ui-first-letter-case.xsstory-BJDtnUwE.mjs.map +1 -0
- package/fesm2022/xsmusices-ui-import-media-bottom-bar.xsstory-7FhVkiVz.mjs +29 -0
- package/fesm2022/xsmusices-ui-import-media-bottom-bar.xsstory-7FhVkiVz.mjs.map +1 -0
- package/fesm2022/xsmusices-ui-import-media-card.xsstory-vhn8r2YJ.mjs +61 -0
- package/fesm2022/xsmusices-ui-import-media-card.xsstory-vhn8r2YJ.mjs.map +1 -0
- package/fesm2022/xsmusices-ui-import-media-flow.xsstory-CMVovyMA.mjs +122 -0
- package/fesm2022/xsmusices-ui-import-media-flow.xsstory-CMVovyMA.mjs.map +1 -0
- package/fesm2022/xsmusices-ui-import-media-header.xsstory-Ci82oaxD.mjs +37 -0
- package/fesm2022/xsmusices-ui-import-media-header.xsstory-Ci82oaxD.mjs.map +1 -0
- package/fesm2022/xsmusices-ui-index-DRXscULI.mjs +11161 -0
- package/fesm2022/xsmusices-ui-index-DRXscULI.mjs.map +1 -0
- package/fesm2022/xsmusices-ui-max-count.xsstory-kWzvhDsC.mjs +70 -0
- package/fesm2022/xsmusices-ui-max-count.xsstory-kWzvhDsC.mjs.map +1 -0
- package/fesm2022/xsmusices-ui-number-to-month.xsstory-LUhA1uRx.mjs +81 -0
- package/fesm2022/xsmusices-ui-number-to-month.xsstory-LUhA1uRx.mjs.map +1 -0
- package/fesm2022/xsmusices-ui-priorities.xsstory-3n93Ph84.mjs +92 -0
- package/fesm2022/xsmusices-ui-priorities.xsstory-3n93Ph84.mjs.map +1 -0
- package/fesm2022/xsmusices-ui-role.xsstory-Cz3SBwNU.mjs +76 -0
- package/fesm2022/xsmusices-ui-role.xsstory-Cz3SBwNU.mjs.map +1 -0
- package/fesm2022/xsmusices-ui-slice-array.xsstory-ElPwFlwd.mjs +76 -0
- package/fesm2022/xsmusices-ui-slice-array.xsstory-ElPwFlwd.mjs.map +1 -0
- package/fesm2022/xsmusices-ui-social.xsstory-gjFcbal_.mjs +83 -0
- package/fesm2022/xsmusices-ui-social.xsstory-gjFcbal_.mjs.map +1 -0
- package/fesm2022/xsmusices-ui-state-name.xsstory-kkdBe2V8.mjs +113 -0
- package/fesm2022/xsmusices-ui-state-name.xsstory-kkdBe2V8.mjs.map +1 -0
- package/fesm2022/xsmusices-ui-stats-card.xsstory-PWTUDysc.mjs +96 -0
- package/fesm2022/xsmusices-ui-stats-card.xsstory-PWTUDysc.mjs.map +1 -0
- package/fesm2022/xsmusices-ui-thousands-separator.xsstory-Q9Q7cCAG.mjs +49 -0
- package/fesm2022/xsmusices-ui-thousands-separator.xsstory-Q9Q7cCAG.mjs.map +1 -0
- package/fesm2022/xsmusices-ui-title-media.xsstory-C4qa-mT2.mjs +81 -0
- package/fesm2022/xsmusices-ui-title-media.xsstory-C4qa-mT2.mjs.map +1 -0
- package/fesm2022/xsmusices-ui-truncate-text.xsstory-B3RQ9xZ3.mjs +67 -0
- package/fesm2022/xsmusices-ui-truncate-text.xsstory-B3RQ9xZ3.mjs.map +1 -0
- package/fesm2022/xsmusices-ui-type-es.xsstory-BsE_4D9p.mjs +110 -0
- package/fesm2022/xsmusices-ui-type-es.xsstory-BsE_4D9p.mjs.map +1 -0
- package/fesm2022/xsmusices-ui-type-user.xsstory-Bn6Fnnmi.mjs +98 -0
- package/fesm2022/xsmusices-ui-type-user.xsstory-Bn6Fnnmi.mjs.map +1 -0
- package/fesm2022/xsmusices-ui-xs-action-sheet.xsstory-CBpZBlfx.mjs +402 -0
- package/fesm2022/xsmusices-ui-xs-action-sheet.xsstory-CBpZBlfx.mjs.map +1 -0
- package/fesm2022/xsmusices-ui-xs-alert-group.xsstory-HMGGLHfv.mjs +201 -0
- package/fesm2022/xsmusices-ui-xs-alert-group.xsstory-HMGGLHfv.mjs.map +1 -0
- package/fesm2022/xsmusices-ui-xs-alert.xsstory-CXTRbHHS.mjs +158 -0
- package/fesm2022/xsmusices-ui-xs-alert.xsstory-CXTRbHHS.mjs.map +1 -0
- package/fesm2022/xsmusices-ui-xs-auth.xsstory-DxO8iDpd.mjs +205 -0
- package/fesm2022/xsmusices-ui-xs-auth.xsstory-DxO8iDpd.mjs.map +1 -0
- package/fesm2022/xsmusices-ui-xs-badge.xsstory-B1QXLQ4H.mjs +229 -0
- package/fesm2022/xsmusices-ui-xs-badge.xsstory-B1QXLQ4H.mjs.map +1 -0
- package/fesm2022/xsmusices-ui-xs-block.xsstory-GXV6UFJo.mjs +165 -0
- package/fesm2022/xsmusices-ui-xs-block.xsstory-GXV6UFJo.mjs.map +1 -0
- package/fesm2022/xsmusices-ui-xs-breadcrumbs.xsstory-CNyBeURd.mjs +44 -0
- package/fesm2022/xsmusices-ui-xs-breadcrumbs.xsstory-CNyBeURd.mjs.map +1 -0
- package/fesm2022/xsmusices-ui-xs-button.xsstory-DqECZuZF.mjs +263 -0
- package/fesm2022/xsmusices-ui-xs-button.xsstory-DqECZuZF.mjs.map +1 -0
- package/fesm2022/xsmusices-ui-xs-buttons-group.xsstory-H1pcuFtx.mjs +97 -0
- package/fesm2022/xsmusices-ui-xs-buttons-group.xsstory-H1pcuFtx.mjs.map +1 -0
- package/fesm2022/xsmusices-ui-xs-chart.xsstory--iUHj7bv.mjs +239 -0
- package/fesm2022/xsmusices-ui-xs-chart.xsstory--iUHj7bv.mjs.map +1 -0
- package/fesm2022/xsmusices-ui-xs-chat-alert.xsstory-rdpQcMgJ.mjs +40 -0
- package/fesm2022/xsmusices-ui-xs-chat-alert.xsstory-rdpQcMgJ.mjs.map +1 -0
- package/fesm2022/xsmusices-ui-xs-chat-conversation-info.xsstory-BQjdjpbB.mjs +157 -0
- package/fesm2022/xsmusices-ui-xs-chat-conversation-info.xsstory-BQjdjpbB.mjs.map +1 -0
- package/fesm2022/xsmusices-ui-xs-chat-conversation.xsstory-sK9b5_Wo.mjs +303 -0
- package/fesm2022/xsmusices-ui-xs-chat-conversation.xsstory-sK9b5_Wo.mjs.map +1 -0
- package/fesm2022/xsmusices-ui-xs-chat-floating-panel.xsstory-_XfEzM1j.mjs +223 -0
- package/fesm2022/xsmusices-ui-xs-chat-floating-panel.xsstory-_XfEzM1j.mjs.map +1 -0
- package/fesm2022/xsmusices-ui-xs-chat-list.xsstory-BSY46FgK.mjs +46 -0
- package/fesm2022/xsmusices-ui-xs-chat-list.xsstory-BSY46FgK.mjs.map +1 -0
- package/fesm2022/xsmusices-ui-xs-chat-textarea.xsstory-NG2p0Tdw.mjs +35 -0
- package/fesm2022/xsmusices-ui-xs-chat-textarea.xsstory-NG2p0Tdw.mjs.map +1 -0
- package/fesm2022/xsmusices-ui-xs-customize-profile.xsstory-Ba7wmXF7.mjs +98 -0
- package/fesm2022/xsmusices-ui-xs-customize-profile.xsstory-Ba7wmXF7.mjs.map +1 -0
- package/fesm2022/xsmusices-ui-xs-date-mini.xsstory-DXog7Yhg.mjs +67 -0
- package/fesm2022/xsmusices-ui-xs-date-mini.xsstory-DXog7Yhg.mjs.map +1 -0
- package/fesm2022/xsmusices-ui-xs-date-range-picker.xsstory-Bmk2wv1s.mjs +25 -0
- package/fesm2022/xsmusices-ui-xs-date-range-picker.xsstory-Bmk2wv1s.mjs.map +1 -0
- package/fesm2022/xsmusices-ui-xs-empty-state.xsstory-CCOJ4b9_.mjs +70 -0
- package/fesm2022/xsmusices-ui-xs-empty-state.xsstory-CCOJ4b9_.mjs.map +1 -0
- package/fesm2022/xsmusices-ui-xs-filter-panel.xsstory-DbvxGppo.mjs +287 -0
- package/fesm2022/xsmusices-ui-xs-filter-panel.xsstory-DbvxGppo.mjs.map +1 -0
- package/fesm2022/xsmusices-ui-xs-formly.xsstory-Bjne7mpZ.mjs +3453 -0
- package/fesm2022/xsmusices-ui-xs-formly.xsstory-Bjne7mpZ.mjs.map +1 -0
- package/fesm2022/xsmusices-ui-xs-full-image.xsstory-xwN2jkW1.mjs +147 -0
- package/fesm2022/xsmusices-ui-xs-full-image.xsstory-xwN2jkW1.mjs.map +1 -0
- package/fesm2022/xsmusices-ui-xs-icon.xsstory-asFaHy5H.mjs +97 -0
- package/fesm2022/xsmusices-ui-xs-icon.xsstory-asFaHy5H.mjs.map +1 -0
- package/fesm2022/xsmusices-ui-xs-image.xsstory-BaeUg3Zp.mjs +142 -0
- package/fesm2022/xsmusices-ui-xs-image.xsstory-BaeUg3Zp.mjs.map +1 -0
- package/fesm2022/xsmusices-ui-xs-info-blocks.xsstory-BHtaC7U6.mjs +957 -0
- package/fesm2022/xsmusices-ui-xs-info-blocks.xsstory-BHtaC7U6.mjs.map +1 -0
- package/fesm2022/xsmusices-ui-xs-item-action.xsstory-839UkJyC.mjs +153 -0
- package/fesm2022/xsmusices-ui-xs-item-action.xsstory-839UkJyC.mjs.map +1 -0
- package/fesm2022/xsmusices-ui-xs-item-card.xsstory-EGJ6itkx.mjs +254 -0
- package/fesm2022/xsmusices-ui-xs-item-card.xsstory-EGJ6itkx.mjs.map +1 -0
- package/fesm2022/xsmusices-ui-xs-item-compact.xsstory-LhApuPL7.mjs +270 -0
- package/fesm2022/xsmusices-ui-xs-item-compact.xsstory-LhApuPL7.mjs.map +1 -0
- package/fesm2022/xsmusices-ui-xs-item-type.xsstory-DUeCnW0R.mjs +252 -0
- package/fesm2022/xsmusices-ui-xs-item-type.xsstory-DUeCnW0R.mjs.map +1 -0
- package/fesm2022/xsmusices-ui-xs-items-slider.xsstory-Dt0bXZI_.mjs +189 -0
- package/fesm2022/xsmusices-ui-xs-items-slider.xsstory-Dt0bXZI_.mjs.map +1 -0
- package/fesm2022/xsmusices-ui-xs-list.xsstory-lElGfvcY.mjs +633 -0
- package/fesm2022/xsmusices-ui-xs-list.xsstory-lElGfvcY.mjs.map +1 -0
- package/fesm2022/xsmusices-ui-xs-map.xsstory-C__bUaLQ.mjs +265 -0
- package/fesm2022/xsmusices-ui-xs-map.xsstory-C__bUaLQ.mjs.map +1 -0
- package/fesm2022/xsmusices-ui-xs-maplibre.xsstory-u_NroLqJ.mjs +513 -0
- package/fesm2022/xsmusices-ui-xs-maplibre.xsstory-u_NroLqJ.mjs.map +1 -0
- package/fesm2022/xsmusices-ui-xs-modal.xsstory-B96CYHF0.mjs +199 -0
- package/fesm2022/xsmusices-ui-xs-modal.xsstory-B96CYHF0.mjs.map +1 -0
- package/fesm2022/xsmusices-ui-xs-navbar-sidebar.xsstory-DHmPSARx.mjs +122 -0
- package/fesm2022/xsmusices-ui-xs-navbar-sidebar.xsstory-DHmPSARx.mjs.map +1 -0
- package/fesm2022/xsmusices-ui-xs-navbar.xsstory-DZrnLMId.mjs +203 -0
- package/fesm2022/xsmusices-ui-xs-navbar.xsstory-DZrnLMId.mjs.map +1 -0
- package/fesm2022/xsmusices-ui-xs-profile-comments.xsstory-CHpCDxLe.mjs +373 -0
- package/fesm2022/xsmusices-ui-xs-profile-comments.xsstory-CHpCDxLe.mjs.map +1 -0
- package/fesm2022/xsmusices-ui-xs-profile-current-event.xsstory-BtRq4wE4.mjs +111 -0
- package/fesm2022/xsmusices-ui-xs-profile-current-event.xsstory-BtRq4wE4.mjs.map +1 -0
- package/fesm2022/xsmusices-ui-xs-profile-exclusive.xsstory-B1Sag_X-.mjs +147 -0
- package/fesm2022/xsmusices-ui-xs-profile-exclusive.xsstory-B1Sag_X-.mjs.map +1 -0
- package/fesm2022/xsmusices-ui-xs-profile-image.xsstory-Cm_ixcdU.mjs +181 -0
- package/fesm2022/xsmusices-ui-xs-profile-image.xsstory-Cm_ixcdU.mjs.map +1 -0
- package/fesm2022/xsmusices-ui-xs-profile-info.xsstory-DAfsbXrF.mjs +95 -0
- package/fesm2022/xsmusices-ui-xs-profile-info.xsstory-DAfsbXrF.mjs.map +1 -0
- package/fesm2022/xsmusices-ui-xs-profile-random-flag.xsstory-DH3Y_XX1.mjs +50 -0
- package/fesm2022/xsmusices-ui-xs-profile-random-flag.xsstory-DH3Y_XX1.mjs.map +1 -0
- package/fesm2022/xsmusices-ui-xs-profile-skeleton.xsstory-BO0ZqUMS.mjs +66 -0
- package/fesm2022/xsmusices-ui-xs-profile-skeleton.xsstory-BO0ZqUMS.mjs.map +1 -0
- package/fesm2022/xsmusices-ui-xs-profile-tops.xsstory-eKxRAMdS.mjs +246 -0
- package/fesm2022/xsmusices-ui-xs-profile-tops.xsstory-eKxRAMdS.mjs.map +1 -0
- package/fesm2022/xsmusices-ui-xs-profile-verified.xsstory-HtbUlJFX.mjs +34 -0
- package/fesm2022/xsmusices-ui-xs-profile-verified.xsstory-HtbUlJFX.mjs.map +1 -0
- package/fesm2022/xsmusices-ui-xs-section-title.xsstory-CHlZ69FK.mjs +180 -0
- package/fesm2022/xsmusices-ui-xs-section-title.xsstory-CHlZ69FK.mjs.map +1 -0
- package/fesm2022/xsmusices-ui-xs-select-modal.xsstory-BMc6o0W7.mjs +112 -0
- package/fesm2022/xsmusices-ui-xs-select-modal.xsstory-BMc6o0W7.mjs.map +1 -0
- package/fesm2022/xsmusices-ui-xs-send-scraper.xsstory-Cq6PuwN7.mjs +79 -0
- package/fesm2022/xsmusices-ui-xs-send-scraper.xsstory-Cq6PuwN7.mjs.map +1 -0
- package/fesm2022/xsmusices-ui-xs-skeleton-for-slider.xsstory-k-uutKIV.mjs +67 -0
- package/fesm2022/xsmusices-ui-xs-skeleton-for-slider.xsstory-k-uutKIV.mjs.map +1 -0
- package/fesm2022/xsmusices-ui-xs-stepper.xsstory-gKU4wN-_.mjs +91 -0
- package/fesm2022/xsmusices-ui-xs-stepper.xsstory-gKU4wN-_.mjs.map +1 -0
- package/fesm2022/xsmusices-ui-xs-table-items.xsstory-vR5x6wZe.mjs +95 -0
- package/fesm2022/xsmusices-ui-xs-table-items.xsstory-vR5x6wZe.mjs.map +1 -0
- package/fesm2022/xsmusices-ui-xs-table.xsstory-s13JV3k9.mjs +2941 -0
- package/fesm2022/xsmusices-ui-xs-table.xsstory-s13JV3k9.mjs.map +1 -0
- package/fesm2022/xsmusices-ui-xs-tabs.xsstory-ColZVzXZ.mjs +72 -0
- package/fesm2022/xsmusices-ui-xs-tabs.xsstory-ColZVzXZ.mjs.map +1 -0
- package/fesm2022/xsmusices-ui-xs-title-collapse.xsstory-COqb1jdP.mjs +65 -0
- package/fesm2022/xsmusices-ui-xs-title-collapse.xsstory-COqb1jdP.mjs.map +1 -0
- package/fesm2022/xsmusices-ui-xs-toast.xsstory-BBhGu-j4.mjs +59 -0
- package/fesm2022/xsmusices-ui-xs-toast.xsstory-BBhGu-j4.mjs.map +1 -0
- package/fesm2022/xsmusices-ui.mjs +725 -684
- package/fesm2022/xsmusices-ui.mjs.map +1 -0
- package/index.d.ts +70 -83
- package/package.json +2 -22
- package/styles/shared-utilities.css +0 -1
- package/LICENSE +0 -9
|
@@ -0,0 +1,270 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { input, output, inject, ChangeDetectionStrategy, Component } from '@angular/core';
|
|
3
|
+
import * as i1 from '@angular/common';
|
|
4
|
+
import { CommonModule } from '@angular/common';
|
|
5
|
+
import * as i2 from '@angular/router';
|
|
6
|
+
import { RouterModule } from '@angular/router';
|
|
7
|
+
import { XS_DEFAULT_ADMIN_USER_ID, getCountryItem, XSImageComponent, XSButtonComponent, PipesModule, CountryFlagPipe, DateLocaleFormatPipe } from './xsmusices-ui.mjs';
|
|
8
|
+
import { FontAwesomeModule } from '@fortawesome/angular-fontawesome';
|
|
9
|
+
import { m as mockArtists, a as mockEvents, b as mockSites, c as mockMedia, d as mockUsers } from './xsmusices-ui-index-DRXscULI.mjs';
|
|
10
|
+
|
|
11
|
+
class XSItemCompactComponent {
|
|
12
|
+
type = input.required(...(ngDevMode ? [{ debugName: "type" }] : []));
|
|
13
|
+
subtypeForced = input(null, ...(ngDevMode ? [{ debugName: "subtypeForced" }] : []));
|
|
14
|
+
item = input.required(...(ngDevMode ? [{ debugName: "item" }] : []));
|
|
15
|
+
edit = input(false, ...(ngDevMode ? [{ debugName: "edit" }] : []));
|
|
16
|
+
year = input(false, ...(ngDevMode ? [{ debugName: "year" }] : []));
|
|
17
|
+
styles = input(false, ...(ngDevMode ? [{ debugName: "styles" }] : []));
|
|
18
|
+
link = input(true, ...(ngDevMode ? [{ debugName: "link" }] : []));
|
|
19
|
+
user = input(...(ngDevMode ? [undefined, { debugName: "user" }] : []));
|
|
20
|
+
count = input(...(ngDevMode ? [undefined, { debugName: "count" }] : []));
|
|
21
|
+
forTop = input(false, ...(ngDevMode ? [{ debugName: "forTop" }] : []));
|
|
22
|
+
position = input(null, ...(ngDevMode ? [{ debugName: "position" }] : []));
|
|
23
|
+
buttonRightIcon = input(...(ngDevMode ? [undefined, { debugName: "buttonRightIcon" }] : []));
|
|
24
|
+
isDraggable = input(false, ...(ngDevMode ? [{ debugName: "isDraggable" }] : []));
|
|
25
|
+
language = input('es', ...(ngDevMode ? [{ debugName: "language" }] : []));
|
|
26
|
+
onClickButtonRight = output();
|
|
27
|
+
onClickDrag = output();
|
|
28
|
+
defaultAdminUserId = inject(XS_DEFAULT_ADMIN_USER_ID);
|
|
29
|
+
get routerLink() {
|
|
30
|
+
if (!this.link()) {
|
|
31
|
+
return null;
|
|
32
|
+
}
|
|
33
|
+
if (!this.item() || !this.type()) {
|
|
34
|
+
return null;
|
|
35
|
+
}
|
|
36
|
+
const typeOk = this.type() === 'media' ? 'music' : this.type() + 's';
|
|
37
|
+
const baseAccountPath = `/account/manage/${typeOk}/`;
|
|
38
|
+
let baseTypePath = `/${this.type()}s`;
|
|
39
|
+
if (this.type() === 'site' || this.type() === 'media') {
|
|
40
|
+
const itemType = this.item().type;
|
|
41
|
+
const typeValue = typeof itemType === 'string'
|
|
42
|
+
? itemType
|
|
43
|
+
: itemType?.['name']
|
|
44
|
+
?.toString()
|
|
45
|
+
?.toLowerCase();
|
|
46
|
+
baseTypePath = typeValue
|
|
47
|
+
? `/${typeValue}s`
|
|
48
|
+
: `/${this.subtypeForced()}s`;
|
|
49
|
+
}
|
|
50
|
+
else if (this.type() === 'organization') {
|
|
51
|
+
const itemTypes = this.item().types;
|
|
52
|
+
baseTypePath =
|
|
53
|
+
itemTypes && itemTypes.length > 0
|
|
54
|
+
? `/${itemTypes[0]}s`
|
|
55
|
+
: `/${this.subtypeForced()}s`;
|
|
56
|
+
}
|
|
57
|
+
else if (this.type() === 'equipment') {
|
|
58
|
+
baseTypePath = '/gear';
|
|
59
|
+
}
|
|
60
|
+
if (!this.edit()) {
|
|
61
|
+
if (this.type() === 'equipment') {
|
|
62
|
+
return [baseTypePath];
|
|
63
|
+
}
|
|
64
|
+
return [baseTypePath, this.item().slug];
|
|
65
|
+
}
|
|
66
|
+
if (this.item().state === 'active') {
|
|
67
|
+
return [baseAccountPath, this.item().slug];
|
|
68
|
+
}
|
|
69
|
+
if (this.type() === 'playlist') {
|
|
70
|
+
return this.edit()
|
|
71
|
+
? [`/account/${this.type()}s/`, this.item().slug]
|
|
72
|
+
: [baseTypePath, this.item().slug];
|
|
73
|
+
}
|
|
74
|
+
return null;
|
|
75
|
+
}
|
|
76
|
+
getItemUserName() {
|
|
77
|
+
const user = this.item().user;
|
|
78
|
+
if (!user)
|
|
79
|
+
return '';
|
|
80
|
+
if (typeof user === 'string')
|
|
81
|
+
return user;
|
|
82
|
+
return (user['name'] || '');
|
|
83
|
+
}
|
|
84
|
+
get typeForImage() {
|
|
85
|
+
if (this.type() === 'organization') {
|
|
86
|
+
return 'organization';
|
|
87
|
+
}
|
|
88
|
+
else if (this.type() === 'playlist') {
|
|
89
|
+
return 'media';
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
return this.type();
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
get country() {
|
|
96
|
+
return getCountryItem(this.item(), this.type());
|
|
97
|
+
}
|
|
98
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.33", ngImport: i0, type: XSItemCompactComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
99
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.33", type: XSItemCompactComponent, isStandalone: true, selector: "xs-item-compact", inputs: { type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: true, transformFunction: null }, subtypeForced: { classPropertyName: "subtypeForced", publicName: "subtypeForced", isSignal: true, isRequired: false, transformFunction: null }, item: { classPropertyName: "item", publicName: "item", isSignal: true, isRequired: true, transformFunction: null }, edit: { classPropertyName: "edit", publicName: "edit", isSignal: true, isRequired: false, transformFunction: null }, year: { classPropertyName: "year", publicName: "year", isSignal: true, isRequired: false, transformFunction: null }, styles: { classPropertyName: "styles", publicName: "styles", isSignal: true, isRequired: false, transformFunction: null }, link: { classPropertyName: "link", publicName: "link", isSignal: true, isRequired: false, transformFunction: null }, user: { classPropertyName: "user", publicName: "user", isSignal: true, isRequired: false, transformFunction: null }, count: { classPropertyName: "count", publicName: "count", isSignal: true, isRequired: false, transformFunction: null }, forTop: { classPropertyName: "forTop", publicName: "forTop", isSignal: true, isRequired: false, transformFunction: null }, position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null }, buttonRightIcon: { classPropertyName: "buttonRightIcon", publicName: "buttonRightIcon", isSignal: true, isRequired: false, transformFunction: null }, isDraggable: { classPropertyName: "isDraggable", publicName: "isDraggable", isSignal: true, isRequired: false, transformFunction: null }, language: { classPropertyName: "language", publicName: "language", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onClickButtonRight: "onClickButtonRight", onClickDrag: "onClickDrag" }, host: { attributes: { "xs-item-compact-host": "" } }, ngImport: i0, template: "<div\n class=\"flex items-center justify-start gap-2 pb-2 transition-all duration-500 bg-black border-b cursor-pointer border-zinc-900\"\n [routerLink]=\"link() ? routerLink : null\"\n [ngClass]=\"{ 'hover:opacity-70': link() }\"\n>\n <div\n class=\"flex-shrink-0 overflow-hidden rounded-xl w-14 h-14\"\n >\n <xs-image\n [item]=\"\n type() !== 'playlist'\n ? item()\n : item().cover\n ? { _id: item().cover, image: true, name: item().name }\n : { image: false, name: item().name }\n \"\n [typeItem]=\"typeForImage\"\n imageType=\"small\"\n [alt]=\"item().name\"\n customClass=\"object-cover w-full h-full cursor-pointer hover:filter-grayscale hover:scale-105 hover:duration-1000\"\n size=\"full\"\n rounded=\"lg\"\n loading=\"lazy\"\n ></xs-image>\n </div>\n\n <div\n class=\"flex flex-col items-start justify-start w-full min-w-0\"\n >\n <h3 class=\"w-full text-[18px] font-semibold text-white pr-2\">\n <span class=\"flex items-center min-w-0 gap-1\">\n <span class=\"block max-w-full pr-2 truncate\">\n {{ item().name }}\n </span>\n @if (\n item().user &&\n (typeof item().user === 'string'\n ? item().user !== defaultAdminUserId\n : true) &&\n type() !== 'playlist'\n ) {\n <svg\n aria-label=\"Verified\"\n fill=\"rgb(0, 149, 246)\"\n height=\"13\"\n viewBox=\"0 0 40 40\"\n width=\"13\"\n class=\"flex-shrink-0\"\n >\n <path\n d=\"M19.998 3.094 14.638 0l-2.972 5.15H5.432v6.354L0 14.64 3.094 20 0 25.359l5.432 3.137v5.905h5.975L14.638 40l5.36-3.094L25.358 40l3.232-5.6h6.162v-6.01L40 25.359 36.905 20 40 14.641l-5.248-3.03v-6.46h-6.419L25.358 0l-5.36 3.094Zm7.415 11.225 2.254 2.287-11.43 11.5-6.835-6.93 2.244-2.258 4.587 4.581 9.18-9.18Z\"\n fill-rule=\"evenodd\"\n ></path>\n </svg>\n }\n </span>\n </h3>\n\n @if (country && type() !== 'site' && type() !== 'event') {\n <div\n class=\"flex items-center gap-1 mb-0.5\"\n >\n <img\n [src]=\"country.code | countryFlag\"\n [alt]=\"country.name\"\n class=\"w-3 h-3\"\n />\n <p class=\"pr-2 text-xs text-gray-400\">\n {{ language() !== 'es' ? country.nameEn : country.name }}\n </p>\n </div>\n }\n\n @if (country && (type() === 'site' || type() === 'event')) {\n <div\n class=\"flex items-center gap-1 mb-0.5 w-full min-w-0\"\n >\n <img\n [src]=\"country.code | countryFlag\"\n [alt]=\"country.name\"\n class=\"flex-shrink-0 w-3 h-3\"\n />\n <p\n class=\"w-full pr-2 overflow-hidden text-xs text-gray-400 truncate whitespace-nowrap\"\n >\n {{\n type() === 'event'\n ? $any(item().site).address.region.name\n : $any(item().address).region.name\n }},\n {{ language() !== 'es' ? country.nameEn : country.name }}\n </p>\n </div>\n }\n\n @if (type() === 'media') {\n <div\n class=\"flex items-center text-gray-350 mb-0.5 pr-2\"\n >\n @for (artist of item().artists?.slice(0, 3); track $index; let last = $last) {\n <span\n class=\"text-xs\"\n >\n {{ $any(artist).name }}@if (!last) {<span>, </span>}\n </span>\n }\n\n @if (\n type() === 'media' && ($any(item().organizations)?.length ?? 0) > 0\n ) {\n <span class=\"text-xs\">\n x {{ $any(item().organizations?.[0])?.name ?? '' }}\n </span>\n }\n </div>\n }\n\n @if (type() === 'playlist' && item().user) {\n <div\n class=\"flex items-center gap-1 mb-0.5 pr-2\"\n >\n <p class=\"text-xs text-gray-400\">\n {{ getItemUserName() }}\n </p>\n </div>\n }\n\n <div class=\"flex pr-2 text-gray-400\">\n @if (item().year) {\n <span class=\"text-xs\">\n {{ item().year }} | \n </span>\n }\n\n @if (item().date) {\n <span class=\"text-xs\">\n {{ item().date! | dateLocaleFormat: language()!\n }}@if (item().styles && $any(item().styles).length > 0) {<span> | </span>}\n </span>\n }\n\n @if (item().styles) {\n @for (\n style of $any(item().styles).slice(\n 0,\n type() == 'event' ? 1 : 3\n );\n track $index;\n let last = $last\n ) {\n <span class=\"text-xs\">\n {{ style.name }}@if (!last) {<span>, </span>}\n </span>\n }\n }\n </div>\n\n @if (type() === 'equipment') {\n <div\n class=\"flex items-center gap-1 mb-0.5 pr-2\"\n >\n <p class=\"text-xs text-gray-400\">\n {{ item().manufacturer }}\n </p>\n </div>\n }\n @if (type() === 'equipment') {\n <div\n class=\"flex items-center gap-1 mb-0.5 pr-2\"\n >\n <p class=\"text-xs text-gray-400\">\n {{ $any(item().type).name }}\n </p>\n </div>\n }\n </div>\n\n @if (forTop() && position() !== null) {\n <span\n id=\"item-compact-position\"\n class=\"pr-2 ml-auto text-2xl font-bold text-white\"\n >\n {{ position() }}\u00BA\n </span>\n }\n\n @if (buttonRightIcon()) {\n <xs-button\n id=\"item-compact-button-right\"\n [icon]=\"{ name: buttonRightIcon() || 'circle-question' }\"\n layout=\"iconOnly\"\n variant=\"custom\"\n customClass=\"pr-4 ml-auto text-white\"\n (onClick)=\"onClickButtonRight.emit(); $event.stopPropagation()\"\n />\n }\n\n @if (isDraggable()) {\n <xs-button\n id=\"item-compact-button-draggable\"\n icon=\"grip-lines\"\n layout=\"iconOnly\"\n variant=\"custom\"\n customClass=\"pr-4 ml-auto text-white\"\n cdkDragHandle\n />\n }\n</div>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: FontAwesomeModule }, { kind: "component", type: XSImageComponent, selector: "xs-image", inputs: ["config", "viewTransitionName", "src", "alt", "width", "height", "size", "rounded", "objectFit", "clickable", "item", "typeItem", "imageType", "fallbackSrc", "loading", "priority", "customClass", "generateAvatar"], outputs: ["onClick", "onLoad", "onError"] }, { kind: "component", type: XSButtonComponent, selector: "xs-button", inputs: ["id", "label", "type", "icon", "action", "customClass", "variant", "layout", "badgeCount", "isFull", "disabled", "loading", "title", "ariaLabel", "borderRadius", "isGrouped", "groupPosition"], outputs: ["isGroupedChange", "groupPositionChange", "click", "onClick"] }, { kind: "ngmodule", type: PipesModule }, { kind: "pipe", type: CountryFlagPipe, name: "countryFlag" }, { kind: "pipe", type: DateLocaleFormatPipe, name: "dateLocaleFormat" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
100
|
+
}
|
|
101
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.33", ngImport: i0, type: XSItemCompactComponent, decorators: [{
|
|
102
|
+
type: Component,
|
|
103
|
+
args: [{ selector: 'xs-item-compact', host: { 'xs-item-compact-host': '' }, imports: [
|
|
104
|
+
CommonModule,
|
|
105
|
+
RouterModule,
|
|
106
|
+
FontAwesomeModule,
|
|
107
|
+
XSImageComponent,
|
|
108
|
+
XSButtonComponent,
|
|
109
|
+
PipesModule,
|
|
110
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n class=\"flex items-center justify-start gap-2 pb-2 transition-all duration-500 bg-black border-b cursor-pointer border-zinc-900\"\n [routerLink]=\"link() ? routerLink : null\"\n [ngClass]=\"{ 'hover:opacity-70': link() }\"\n>\n <div\n class=\"flex-shrink-0 overflow-hidden rounded-xl w-14 h-14\"\n >\n <xs-image\n [item]=\"\n type() !== 'playlist'\n ? item()\n : item().cover\n ? { _id: item().cover, image: true, name: item().name }\n : { image: false, name: item().name }\n \"\n [typeItem]=\"typeForImage\"\n imageType=\"small\"\n [alt]=\"item().name\"\n customClass=\"object-cover w-full h-full cursor-pointer hover:filter-grayscale hover:scale-105 hover:duration-1000\"\n size=\"full\"\n rounded=\"lg\"\n loading=\"lazy\"\n ></xs-image>\n </div>\n\n <div\n class=\"flex flex-col items-start justify-start w-full min-w-0\"\n >\n <h3 class=\"w-full text-[18px] font-semibold text-white pr-2\">\n <span class=\"flex items-center min-w-0 gap-1\">\n <span class=\"block max-w-full pr-2 truncate\">\n {{ item().name }}\n </span>\n @if (\n item().user &&\n (typeof item().user === 'string'\n ? item().user !== defaultAdminUserId\n : true) &&\n type() !== 'playlist'\n ) {\n <svg\n aria-label=\"Verified\"\n fill=\"rgb(0, 149, 246)\"\n height=\"13\"\n viewBox=\"0 0 40 40\"\n width=\"13\"\n class=\"flex-shrink-0\"\n >\n <path\n d=\"M19.998 3.094 14.638 0l-2.972 5.15H5.432v6.354L0 14.64 3.094 20 0 25.359l5.432 3.137v5.905h5.975L14.638 40l5.36-3.094L25.358 40l3.232-5.6h6.162v-6.01L40 25.359 36.905 20 40 14.641l-5.248-3.03v-6.46h-6.419L25.358 0l-5.36 3.094Zm7.415 11.225 2.254 2.287-11.43 11.5-6.835-6.93 2.244-2.258 4.587 4.581 9.18-9.18Z\"\n fill-rule=\"evenodd\"\n ></path>\n </svg>\n }\n </span>\n </h3>\n\n @if (country && type() !== 'site' && type() !== 'event') {\n <div\n class=\"flex items-center gap-1 mb-0.5\"\n >\n <img\n [src]=\"country.code | countryFlag\"\n [alt]=\"country.name\"\n class=\"w-3 h-3\"\n />\n <p class=\"pr-2 text-xs text-gray-400\">\n {{ language() !== 'es' ? country.nameEn : country.name }}\n </p>\n </div>\n }\n\n @if (country && (type() === 'site' || type() === 'event')) {\n <div\n class=\"flex items-center gap-1 mb-0.5 w-full min-w-0\"\n >\n <img\n [src]=\"country.code | countryFlag\"\n [alt]=\"country.name\"\n class=\"flex-shrink-0 w-3 h-3\"\n />\n <p\n class=\"w-full pr-2 overflow-hidden text-xs text-gray-400 truncate whitespace-nowrap\"\n >\n {{\n type() === 'event'\n ? $any(item().site).address.region.name\n : $any(item().address).region.name\n }},\n {{ language() !== 'es' ? country.nameEn : country.name }}\n </p>\n </div>\n }\n\n @if (type() === 'media') {\n <div\n class=\"flex items-center text-gray-350 mb-0.5 pr-2\"\n >\n @for (artist of item().artists?.slice(0, 3); track $index; let last = $last) {\n <span\n class=\"text-xs\"\n >\n {{ $any(artist).name }}@if (!last) {<span>, </span>}\n </span>\n }\n\n @if (\n type() === 'media' && ($any(item().organizations)?.length ?? 0) > 0\n ) {\n <span class=\"text-xs\">\n x {{ $any(item().organizations?.[0])?.name ?? '' }}\n </span>\n }\n </div>\n }\n\n @if (type() === 'playlist' && item().user) {\n <div\n class=\"flex items-center gap-1 mb-0.5 pr-2\"\n >\n <p class=\"text-xs text-gray-400\">\n {{ getItemUserName() }}\n </p>\n </div>\n }\n\n <div class=\"flex pr-2 text-gray-400\">\n @if (item().year) {\n <span class=\"text-xs\">\n {{ item().year }} | \n </span>\n }\n\n @if (item().date) {\n <span class=\"text-xs\">\n {{ item().date! | dateLocaleFormat: language()!\n }}@if (item().styles && $any(item().styles).length > 0) {<span> | </span>}\n </span>\n }\n\n @if (item().styles) {\n @for (\n style of $any(item().styles).slice(\n 0,\n type() == 'event' ? 1 : 3\n );\n track $index;\n let last = $last\n ) {\n <span class=\"text-xs\">\n {{ style.name }}@if (!last) {<span>, </span>}\n </span>\n }\n }\n </div>\n\n @if (type() === 'equipment') {\n <div\n class=\"flex items-center gap-1 mb-0.5 pr-2\"\n >\n <p class=\"text-xs text-gray-400\">\n {{ item().manufacturer }}\n </p>\n </div>\n }\n @if (type() === 'equipment') {\n <div\n class=\"flex items-center gap-1 mb-0.5 pr-2\"\n >\n <p class=\"text-xs text-gray-400\">\n {{ $any(item().type).name }}\n </p>\n </div>\n }\n </div>\n\n @if (forTop() && position() !== null) {\n <span\n id=\"item-compact-position\"\n class=\"pr-2 ml-auto text-2xl font-bold text-white\"\n >\n {{ position() }}\u00BA\n </span>\n }\n\n @if (buttonRightIcon()) {\n <xs-button\n id=\"item-compact-button-right\"\n [icon]=\"{ name: buttonRightIcon() || 'circle-question' }\"\n layout=\"iconOnly\"\n variant=\"custom\"\n customClass=\"pr-4 ml-auto text-white\"\n (onClick)=\"onClickButtonRight.emit(); $event.stopPropagation()\"\n />\n }\n\n @if (isDraggable()) {\n <xs-button\n id=\"item-compact-button-draggable\"\n icon=\"grip-lines\"\n layout=\"iconOnly\"\n variant=\"custom\"\n customClass=\"pr-4 ml-auto text-white\"\n cdkDragHandle\n />\n }\n</div>\n" }]
|
|
111
|
+
}], propDecorators: { type: [{ type: i0.Input, args: [{ isSignal: true, alias: "type", required: true }] }], subtypeForced: [{ type: i0.Input, args: [{ isSignal: true, alias: "subtypeForced", required: false }] }], item: [{ type: i0.Input, args: [{ isSignal: true, alias: "item", required: true }] }], edit: [{ type: i0.Input, args: [{ isSignal: true, alias: "edit", required: false }] }], year: [{ type: i0.Input, args: [{ isSignal: true, alias: "year", required: false }] }], styles: [{ type: i0.Input, args: [{ isSignal: true, alias: "styles", required: false }] }], link: [{ type: i0.Input, args: [{ isSignal: true, alias: "link", required: false }] }], user: [{ type: i0.Input, args: [{ isSignal: true, alias: "user", required: false }] }], count: [{ type: i0.Input, args: [{ isSignal: true, alias: "count", required: false }] }], forTop: [{ type: i0.Input, args: [{ isSignal: true, alias: "forTop", required: false }] }], position: [{ type: i0.Input, args: [{ isSignal: true, alias: "position", required: false }] }], buttonRightIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "buttonRightIcon", required: false }] }], isDraggable: [{ type: i0.Input, args: [{ isSignal: true, alias: "isDraggable", required: false }] }], language: [{ type: i0.Input, args: [{ isSignal: true, alias: "language", required: false }] }], onClickButtonRight: [{ type: i0.Output, args: ["onClickButtonRight"] }], onClickDrag: [{ type: i0.Output, args: ["onClickDrag"] }] } });
|
|
112
|
+
|
|
113
|
+
const story = {
|
|
114
|
+
id: 'item-compact',
|
|
115
|
+
name: 'Item Compact',
|
|
116
|
+
type: 'component',
|
|
117
|
+
subtype: 'UI',
|
|
118
|
+
status: 'active',
|
|
119
|
+
usage: ['admin', 'app', 'monitor'],
|
|
120
|
+
updated: '2026-01-04T22:00:00.000Z',
|
|
121
|
+
created: '2026-01-02T00:44:32.446Z',
|
|
122
|
+
description: 'Componente compacto para mostrar items de diferentes tipos (artistas, eventos, medios, usuarios, etc.) con imagen, nombre, metadatos contextuales y acciones. Incluye soporte para modos de edición, drag & drop, y diferentes layouts según el tipo de contenido. Diseñado para listas densas donde se necesita máxima información en mínimo espacio.',
|
|
123
|
+
component: XSItemCompactComponent,
|
|
124
|
+
selector: 'xs-item-compact',
|
|
125
|
+
inputs: [
|
|
126
|
+
{
|
|
127
|
+
key: 'type',
|
|
128
|
+
label: 'Type',
|
|
129
|
+
type: 'select',
|
|
130
|
+
options: [
|
|
131
|
+
'artist',
|
|
132
|
+
'organization',
|
|
133
|
+
'event',
|
|
134
|
+
'site',
|
|
135
|
+
'equipment',
|
|
136
|
+
'playlist',
|
|
137
|
+
'media',
|
|
138
|
+
'user',
|
|
139
|
+
],
|
|
140
|
+
default: 'artist',
|
|
141
|
+
},
|
|
142
|
+
{
|
|
143
|
+
key: 'item',
|
|
144
|
+
label: 'Item',
|
|
145
|
+
type: 'json',
|
|
146
|
+
default: mockArtists[0], // Fatima Hajji - complete artist data
|
|
147
|
+
},
|
|
148
|
+
{
|
|
149
|
+
key: 'edit',
|
|
150
|
+
label: 'Edit',
|
|
151
|
+
type: 'boolean',
|
|
152
|
+
default: false,
|
|
153
|
+
},
|
|
154
|
+
{
|
|
155
|
+
key: 'year',
|
|
156
|
+
label: 'Year',
|
|
157
|
+
type: 'boolean',
|
|
158
|
+
default: false,
|
|
159
|
+
},
|
|
160
|
+
{
|
|
161
|
+
key: 'styles',
|
|
162
|
+
label: 'Styles',
|
|
163
|
+
type: 'boolean',
|
|
164
|
+
default: false,
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
key: 'link',
|
|
168
|
+
label: 'Link',
|
|
169
|
+
type: 'boolean',
|
|
170
|
+
default: true,
|
|
171
|
+
},
|
|
172
|
+
],
|
|
173
|
+
examples: [
|
|
174
|
+
{
|
|
175
|
+
name: 'Artist Item',
|
|
176
|
+
description: 'Item compact para artista con datos reales',
|
|
177
|
+
inputs: {
|
|
178
|
+
type: 'artist',
|
|
179
|
+
item: mockArtists[0], // Fatima Hajji
|
|
180
|
+
},
|
|
181
|
+
},
|
|
182
|
+
{
|
|
183
|
+
name: 'Organization Item',
|
|
184
|
+
description: 'Item compact para organización',
|
|
185
|
+
inputs: {
|
|
186
|
+
type: 'organization',
|
|
187
|
+
item: mockArtists[0], // Using artist mock for organization example
|
|
188
|
+
},
|
|
189
|
+
},
|
|
190
|
+
{
|
|
191
|
+
name: 'Event Item',
|
|
192
|
+
description: 'Item compact para evento con datos reales',
|
|
193
|
+
inputs: {
|
|
194
|
+
type: 'event',
|
|
195
|
+
item: mockEvents[0], // Hale-Bopp Vol.4
|
|
196
|
+
},
|
|
197
|
+
},
|
|
198
|
+
{
|
|
199
|
+
name: 'Site Item',
|
|
200
|
+
description: 'Item compact para sitio con datos reales',
|
|
201
|
+
inputs: {
|
|
202
|
+
type: 'site',
|
|
203
|
+
item: mockSites[0], // Smut Athens
|
|
204
|
+
},
|
|
205
|
+
},
|
|
206
|
+
{
|
|
207
|
+
name: 'Equipment Item',
|
|
208
|
+
description: 'Item compact para equipo',
|
|
209
|
+
inputs: {
|
|
210
|
+
type: 'equipment',
|
|
211
|
+
item: {
|
|
212
|
+
name: 'Pioneer DJ Mixer',
|
|
213
|
+
type: { name: 'DJ Mixer' },
|
|
214
|
+
manufacturer: 'Pioneer',
|
|
215
|
+
info: 'Mezclador profesional para DJ',
|
|
216
|
+
slug: 'pioneer-dj-mixer',
|
|
217
|
+
},
|
|
218
|
+
},
|
|
219
|
+
},
|
|
220
|
+
{
|
|
221
|
+
name: 'Playlist Item',
|
|
222
|
+
description: 'Item compact para playlist',
|
|
223
|
+
inputs: {
|
|
224
|
+
type: 'playlist',
|
|
225
|
+
item: {
|
|
226
|
+
name: 'My Techno Mix',
|
|
227
|
+
slug: 'my-techno-mix',
|
|
228
|
+
tracks: [
|
|
229
|
+
{ _id: 'track1', name: 'Track 1' },
|
|
230
|
+
{ _id: 'track2', name: 'Track 2' },
|
|
231
|
+
],
|
|
232
|
+
private: false,
|
|
233
|
+
updated: '2026-01-04T10:00:00.000Z',
|
|
234
|
+
},
|
|
235
|
+
},
|
|
236
|
+
},
|
|
237
|
+
{
|
|
238
|
+
name: 'Media Item',
|
|
239
|
+
description: 'Item compact para media con datos reales',
|
|
240
|
+
inputs: {
|
|
241
|
+
type: 'media',
|
|
242
|
+
item: mockMedia[0], // Opening Vinyl Set
|
|
243
|
+
},
|
|
244
|
+
},
|
|
245
|
+
{
|
|
246
|
+
name: 'User Item',
|
|
247
|
+
description: 'Item compact para usuario con datos reales',
|
|
248
|
+
inputs: {
|
|
249
|
+
type: 'user',
|
|
250
|
+
item: mockUsers[0], // JoseXS
|
|
251
|
+
},
|
|
252
|
+
},
|
|
253
|
+
],
|
|
254
|
+
multilanguage: false,
|
|
255
|
+
notes: [
|
|
256
|
+
{
|
|
257
|
+
text: 'Este componente fue creado automáticamente. Es necesario completar la documentación, inputs y examples.',
|
|
258
|
+
type: 'warning',
|
|
259
|
+
},
|
|
260
|
+
],
|
|
261
|
+
coverage: {
|
|
262
|
+
statements: 98,
|
|
263
|
+
branches: 82,
|
|
264
|
+
functions: 100,
|
|
265
|
+
lines: 98,
|
|
266
|
+
},
|
|
267
|
+
};
|
|
268
|
+
|
|
269
|
+
export { story };
|
|
270
|
+
//# sourceMappingURL=xsmusices-ui-xs-item-compact.xsstory-LhApuPL7.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"xsmusices-ui-xs-item-compact.xsstory-LhApuPL7.mjs","sources":["../../../projects/xs-ui/src/lib/components/ui/items/compact/xs-item-compact.component.ts","../../../projects/xs-ui/src/lib/components/ui/items/compact/xs-item-compact.component.html","../../../projects/xs-ui/src/lib/components/ui/items/compact/xs-item-compact.xsstory.ts"],"sourcesContent":["import {\n Component,\n ChangeDetectionStrategy,\n input,\n output,\n inject,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RouterModule } from '@angular/router';\nimport { XSImageComponent } from '../../../base/image';\nimport { XSButtonComponent } from '../../../base/button';\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\nimport { UserI } from '../../../../interfaces';\nimport { XSItemData } from '../../../../interfaces/xs-item.interface';\nimport {\n XSGenericItemType,\n XSGenericSubItemType,\n} from '../../../../types';\nimport { XS_DEFAULT_ADMIN_USER_ID } from '../../../../tokens';\nimport { PipesModule } from '../../../../pipes';\nimport { getCountryItem } from '../../../../utils/xs-generic.utils';\n\n@Component({\n selector: 'xs-item-compact',\n templateUrl: 'xs-item-compact.component.html',\n host: { 'xs-item-compact-host': '' },\n imports: [\n CommonModule,\n RouterModule,\n FontAwesomeModule,\n XSImageComponent,\n XSButtonComponent,\n PipesModule,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class XSItemCompactComponent {\n type = input.required<XSGenericItemType>();\n subtypeForced = input<XSGenericSubItemType | null>(null);\n item = input.required<XSItemData>();\n edit = input(false);\n year = input(false);\n styles = input(false);\n link = input(true);\n user = input<UserI>();\n count = input<{ name: string; value: unknown }>();\n forTop = input(false);\n position = input<number | null>(null);\n buttonRightIcon = input<string>();\n isDraggable = input(false);\n language = input<'en' | 'es' | null>('es');\n readonly onClickButtonRight = output<void>();\n readonly onClickDrag = output<void>();\n\n defaultAdminUserId = inject(XS_DEFAULT_ADMIN_USER_ID);\n\n get routerLink(): string[] | null {\n if (!this.link()) {\n return null;\n }\n\n if (!this.item() || !this.type()) {\n return null;\n }\n\n const typeOk =\n this.type() === 'media' ? 'music' : this.type() + 's';\n const baseAccountPath = `/account/manage/${typeOk}/`;\n let baseTypePath = `/${this.type()}s`;\n if (this.type() === 'site' || this.type() === 'media') {\n const itemType = this.item().type;\n const typeValue =\n typeof itemType === 'string'\n ? itemType\n : (itemType as Record<string, unknown>)?.['name']\n ?.toString()\n ?.toLowerCase();\n baseTypePath = typeValue\n ? `/${typeValue}s`\n : `/${this.subtypeForced()}s`;\n } else if (this.type() === 'organization') {\n const itemTypes = this.item().types;\n baseTypePath =\n itemTypes && itemTypes.length > 0\n ? `/${itemTypes[0]}s`\n : `/${this.subtypeForced()}s`;\n } else if (this.type() === 'equipment') {\n baseTypePath = '/gear';\n }\n\n if (!this.edit()) {\n if (this.type() === 'equipment') {\n return [baseTypePath];\n }\n return [baseTypePath, this.item().slug!];\n }\n\n if (this.item().state === 'active') {\n return [baseAccountPath, this.item().slug!];\n }\n\n if (this.type() === 'playlist') {\n return this.edit()\n ? [`/account/${this.type()}s/`, this.item().slug!]\n : [baseTypePath, this.item().slug!];\n }\n\n return null;\n }\n\n getItemUserName(): string {\n const user = this.item().user;\n if (!user) return '';\n if (typeof user === 'string') return user;\n return (\n ((user as Record<string, unknown>)['name'] as string) || ''\n );\n }\n\n get typeForImage() {\n if (this.type() === 'organization') {\n return 'organization';\n } else if (this.type() === 'playlist') {\n return 'media';\n } else {\n return this.type();\n }\n }\n\n get country() {\n return getCountryItem(this.item(), this.type());\n }\n}\n","<div\n class=\"flex items-center justify-start gap-2 pb-2 transition-all duration-500 bg-black border-b cursor-pointer border-zinc-900\"\n [routerLink]=\"link() ? routerLink : null\"\n [ngClass]=\"{ 'hover:opacity-70': link() }\"\n>\n <div\n class=\"flex-shrink-0 overflow-hidden rounded-xl w-14 h-14\"\n >\n <xs-image\n [item]=\"\n type() !== 'playlist'\n ? item()\n : item().cover\n ? { _id: item().cover, image: true, name: item().name }\n : { image: false, name: item().name }\n \"\n [typeItem]=\"typeForImage\"\n imageType=\"small\"\n [alt]=\"item().name\"\n customClass=\"object-cover w-full h-full cursor-pointer hover:filter-grayscale hover:scale-105 hover:duration-1000\"\n size=\"full\"\n rounded=\"lg\"\n loading=\"lazy\"\n ></xs-image>\n </div>\n\n <div\n class=\"flex flex-col items-start justify-start w-full min-w-0\"\n >\n <h3 class=\"w-full text-[18px] font-semibold text-white pr-2\">\n <span class=\"flex items-center min-w-0 gap-1\">\n <span class=\"block max-w-full pr-2 truncate\">\n {{ item().name }}\n </span>\n @if (\n item().user &&\n (typeof item().user === 'string'\n ? item().user !== defaultAdminUserId\n : true) &&\n type() !== 'playlist'\n ) {\n <svg\n aria-label=\"Verified\"\n fill=\"rgb(0, 149, 246)\"\n height=\"13\"\n viewBox=\"0 0 40 40\"\n width=\"13\"\n class=\"flex-shrink-0\"\n >\n <path\n d=\"M19.998 3.094 14.638 0l-2.972 5.15H5.432v6.354L0 14.64 3.094 20 0 25.359l5.432 3.137v5.905h5.975L14.638 40l5.36-3.094L25.358 40l3.232-5.6h6.162v-6.01L40 25.359 36.905 20 40 14.641l-5.248-3.03v-6.46h-6.419L25.358 0l-5.36 3.094Zm7.415 11.225 2.254 2.287-11.43 11.5-6.835-6.93 2.244-2.258 4.587 4.581 9.18-9.18Z\"\n fill-rule=\"evenodd\"\n ></path>\n </svg>\n }\n </span>\n </h3>\n\n @if (country && type() !== 'site' && type() !== 'event') {\n <div\n class=\"flex items-center gap-1 mb-0.5\"\n >\n <img\n [src]=\"country.code | countryFlag\"\n [alt]=\"country.name\"\n class=\"w-3 h-3\"\n />\n <p class=\"pr-2 text-xs text-gray-400\">\n {{ language() !== 'es' ? country.nameEn : country.name }}\n </p>\n </div>\n }\n\n @if (country && (type() === 'site' || type() === 'event')) {\n <div\n class=\"flex items-center gap-1 mb-0.5 w-full min-w-0\"\n >\n <img\n [src]=\"country.code | countryFlag\"\n [alt]=\"country.name\"\n class=\"flex-shrink-0 w-3 h-3\"\n />\n <p\n class=\"w-full pr-2 overflow-hidden text-xs text-gray-400 truncate whitespace-nowrap\"\n >\n {{\n type() === 'event'\n ? $any(item().site).address.region.name\n : $any(item().address).region.name\n }},\n {{ language() !== 'es' ? country.nameEn : country.name }}\n </p>\n </div>\n }\n\n @if (type() === 'media') {\n <div\n class=\"flex items-center text-gray-350 mb-0.5 pr-2\"\n >\n @for (artist of item().artists?.slice(0, 3); track $index; let last = $last) {\n <span\n class=\"text-xs\"\n >\n {{ $any(artist).name }}@if (!last) {<span>, </span>}\n </span>\n }\n\n @if (\n type() === 'media' && ($any(item().organizations)?.length ?? 0) > 0\n ) {\n <span class=\"text-xs\">\n x {{ $any(item().organizations?.[0])?.name ?? '' }}\n </span>\n }\n </div>\n }\n\n @if (type() === 'playlist' && item().user) {\n <div\n class=\"flex items-center gap-1 mb-0.5 pr-2\"\n >\n <p class=\"text-xs text-gray-400\">\n {{ getItemUserName() }}\n </p>\n </div>\n }\n\n <div class=\"flex pr-2 text-gray-400\">\n @if (item().year) {\n <span class=\"text-xs\">\n {{ item().year }} | \n </span>\n }\n\n @if (item().date) {\n <span class=\"text-xs\">\n {{ item().date! | dateLocaleFormat: language()!\n }}@if (item().styles && $any(item().styles).length > 0) {<span> | </span>}\n </span>\n }\n\n @if (item().styles) {\n @for (\n style of $any(item().styles).slice(\n 0,\n type() == 'event' ? 1 : 3\n );\n track $index;\n let last = $last\n ) {\n <span class=\"text-xs\">\n {{ style.name }}@if (!last) {<span>, </span>}\n </span>\n }\n }\n </div>\n\n @if (type() === 'equipment') {\n <div\n class=\"flex items-center gap-1 mb-0.5 pr-2\"\n >\n <p class=\"text-xs text-gray-400\">\n {{ item().manufacturer }}\n </p>\n </div>\n }\n @if (type() === 'equipment') {\n <div\n class=\"flex items-center gap-1 mb-0.5 pr-2\"\n >\n <p class=\"text-xs text-gray-400\">\n {{ $any(item().type).name }}\n </p>\n </div>\n }\n </div>\n\n @if (forTop() && position() !== null) {\n <span\n id=\"item-compact-position\"\n class=\"pr-2 ml-auto text-2xl font-bold text-white\"\n >\n {{ position() }}º\n </span>\n }\n\n @if (buttonRightIcon()) {\n <xs-button\n id=\"item-compact-button-right\"\n [icon]=\"{ name: buttonRightIcon() || 'circle-question' }\"\n layout=\"iconOnly\"\n variant=\"custom\"\n customClass=\"pr-4 ml-auto text-white\"\n (onClick)=\"onClickButtonRight.emit(); $event.stopPropagation()\"\n />\n }\n\n @if (isDraggable()) {\n <xs-button\n id=\"item-compact-button-draggable\"\n icon=\"grip-lines\"\n layout=\"iconOnly\"\n variant=\"custom\"\n customClass=\"pr-4 ml-auto text-white\"\n cdkDragHandle\n />\n }\n</div>\n","import { StoryMeta } from '../../../../story.types';\nimport { XSItemCompactComponent } from './xs-item-compact.component';\nimport {\n mockArtists,\n mockEvents,\n mockSites,\n mockMedia,\n mockUsers,\n} from '../../../../mocks';\n\nexport const story: StoryMeta = {\n id: 'item-compact',\n name: 'Item Compact',\n type: 'component',\n subtype: 'UI',\n status: 'active',\n usage: ['admin', 'app', 'monitor'],\n updated: '2026-01-04T22:00:00.000Z',\n created: '2026-01-02T00:44:32.446Z',\n description:\n 'Componente compacto para mostrar items de diferentes tipos (artistas, eventos, medios, usuarios, etc.) con imagen, nombre, metadatos contextuales y acciones. Incluye soporte para modos de edición, drag & drop, y diferentes layouts según el tipo de contenido. Diseñado para listas densas donde se necesita máxima información en mínimo espacio.',\n component: XSItemCompactComponent,\n selector: 'xs-item-compact',\n inputs: [\n {\n key: 'type',\n label: 'Type',\n type: 'select',\n options: [\n 'artist',\n 'organization',\n 'event',\n 'site',\n 'equipment',\n 'playlist',\n 'media',\n 'user',\n ],\n default: 'artist',\n },\n {\n key: 'item',\n label: 'Item',\n type: 'json',\n default: mockArtists[0], // Fatima Hajji - complete artist data\n },\n {\n key: 'edit',\n label: 'Edit',\n type: 'boolean',\n default: false,\n },\n {\n key: 'year',\n label: 'Year',\n type: 'boolean',\n default: false,\n },\n {\n key: 'styles',\n label: 'Styles',\n type: 'boolean',\n default: false,\n },\n {\n key: 'link',\n label: 'Link',\n type: 'boolean',\n default: true,\n },\n ],\n examples: [\n {\n name: 'Artist Item',\n description: 'Item compact para artista con datos reales',\n inputs: {\n type: 'artist',\n item: mockArtists[0], // Fatima Hajji\n },\n },\n {\n name: 'Organization Item',\n description: 'Item compact para organización',\n inputs: {\n type: 'organization',\n item: mockArtists[0], // Using artist mock for organization example\n },\n },\n {\n name: 'Event Item',\n description: 'Item compact para evento con datos reales',\n inputs: {\n type: 'event',\n item: mockEvents[0], // Hale-Bopp Vol.4\n },\n },\n {\n name: 'Site Item',\n description: 'Item compact para sitio con datos reales',\n inputs: {\n type: 'site',\n item: mockSites[0], // Smut Athens\n },\n },\n {\n name: 'Equipment Item',\n description: 'Item compact para equipo',\n inputs: {\n type: 'equipment',\n item: {\n name: 'Pioneer DJ Mixer',\n type: { name: 'DJ Mixer' },\n manufacturer: 'Pioneer',\n info: 'Mezclador profesional para DJ',\n slug: 'pioneer-dj-mixer',\n },\n },\n },\n {\n name: 'Playlist Item',\n description: 'Item compact para playlist',\n inputs: {\n type: 'playlist',\n item: {\n name: 'My Techno Mix',\n slug: 'my-techno-mix',\n tracks: [\n { _id: 'track1', name: 'Track 1' },\n { _id: 'track2', name: 'Track 2' },\n ],\n private: false,\n updated: '2026-01-04T10:00:00.000Z',\n },\n },\n },\n {\n name: 'Media Item',\n description: 'Item compact para media con datos reales',\n inputs: {\n type: 'media',\n item: mockMedia[0], // Opening Vinyl Set\n },\n },\n {\n name: 'User Item',\n description: 'Item compact para usuario con datos reales',\n inputs: {\n type: 'user',\n item: mockUsers[0], // JoseXS\n },\n },\n ],\n multilanguage: false,\n notes: [\n {\n text: 'Este componente fue creado automáticamente. Es necesario completar la documentación, inputs y examples.',\n type: 'warning',\n },\n ],\n coverage: {\n statements: 98,\n branches: 82,\n functions: 100,\n lines: 98,\n },\n};\n"],"names":["i3.CountryFlagPipe","i4.DateLocaleFormatPipe"],"mappings":";;;;;;;;;;MAoCa,sBAAsB,CAAA;AACjC,IAAA,IAAI,GAAG,KAAK,CAAC,QAAQ,+CAAqB;AAC1C,IAAA,aAAa,GAAG,KAAK,CAA8B,IAAI,yDAAC;AACxD,IAAA,IAAI,GAAG,KAAK,CAAC,QAAQ,+CAAc;AACnC,IAAA,IAAI,GAAG,KAAK,CAAC,KAAK,gDAAC;AACnB,IAAA,IAAI,GAAG,KAAK,CAAC,KAAK,gDAAC;AACnB,IAAA,MAAM,GAAG,KAAK,CAAC,KAAK,kDAAC;AACrB,IAAA,IAAI,GAAG,KAAK,CAAC,IAAI,gDAAC;IAClB,IAAI,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAS;IACrB,KAAK,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAoC;AACjD,IAAA,MAAM,GAAG,KAAK,CAAC,KAAK,kDAAC;AACrB,IAAA,QAAQ,GAAG,KAAK,CAAgB,IAAI,oDAAC;IACrC,eAAe,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;AACjC,IAAA,WAAW,GAAG,KAAK,CAAC,KAAK,uDAAC;AAC1B,IAAA,QAAQ,GAAG,KAAK,CAAqB,IAAI,oDAAC;IACjC,kBAAkB,GAAG,MAAM,EAAQ;IACnC,WAAW,GAAG,MAAM,EAAQ;AAErC,IAAA,kBAAkB,GAAG,MAAM,CAAC,wBAAwB,CAAC;AAErD,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE;AAChB,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE;AAChC,YAAA,OAAO,IAAI;QACb;QAEA,MAAM,MAAM,GACV,IAAI,CAAC,IAAI,EAAE,KAAK,OAAO,GAAG,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,GAAG,GAAG;AACvD,QAAA,MAAM,eAAe,GAAG,CAAA,gBAAA,EAAmB,MAAM,GAAG;QACpD,IAAI,YAAY,GAAG,CAAA,CAAA,EAAI,IAAI,CAAC,IAAI,EAAE,GAAG;AACrC,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,MAAM,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,OAAO,EAAE;YACrD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI;AACjC,YAAA,MAAM,SAAS,GACb,OAAO,QAAQ,KAAK;AAClB,kBAAE;AACF,kBAAG,QAAoC,GAAG,MAAM;AAC5C,sBAAE,QAAQ;sBACR,WAAW,EAAE;AACvB,YAAA,YAAY,GAAG;kBACX,CAAA,CAAA,EAAI,SAAS,CAAA,CAAA;AACf,kBAAE,CAAA,CAAA,EAAI,IAAI,CAAC,aAAa,EAAE,GAAG;QACjC;AAAO,aAAA,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,cAAc,EAAE;YACzC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK;YACnC,YAAY;AACV,gBAAA,SAAS,IAAI,SAAS,CAAC,MAAM,GAAG;AAC9B,sBAAE,CAAA,CAAA,EAAI,SAAS,CAAC,CAAC,CAAC,CAAA,CAAA;AAClB,sBAAE,CAAA,CAAA,EAAI,IAAI,CAAC,aAAa,EAAE,GAAG;QACnC;AAAO,aAAA,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,WAAW,EAAE;YACtC,YAAY,GAAG,OAAO;QACxB;AAEA,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE;AAChB,YAAA,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,WAAW,EAAE;gBAC/B,OAAO,CAAC,YAAY,CAAC;YACvB;YACA,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,IAAK,CAAC;QAC1C;QAEA,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,KAAK,QAAQ,EAAE;YAClC,OAAO,CAAC,eAAe,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,IAAK,CAAC;QAC7C;AAEA,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,UAAU,EAAE;YAC9B,OAAO,IAAI,CAAC,IAAI;AACd,kBAAE,CAAC,CAAA,SAAA,EAAY,IAAI,CAAC,IAAI,EAAE,CAAA,EAAA,CAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,IAAK;kBAC/C,CAAC,YAAY,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,IAAK,CAAC;QACvC;AAEA,QAAA,OAAO,IAAI;IACb;IAEA,eAAe,GAAA;QACb,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI;AAC7B,QAAA,IAAI,CAAC,IAAI;AAAE,YAAA,OAAO,EAAE;QACpB,IAAI,OAAO,IAAI,KAAK,QAAQ;AAAE,YAAA,OAAO,IAAI;QACzC,QACI,IAAgC,CAAC,MAAM,CAAY,IAAI,EAAE;IAE/D;AAEA,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,cAAc,EAAE;AAClC,YAAA,OAAO,cAAc;QACvB;AAAO,aAAA,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,UAAU,EAAE;AACrC,YAAA,OAAO,OAAO;QAChB;aAAO;AACL,YAAA,OAAO,IAAI,CAAC,IAAI,EAAE;QACpB;IACF;AAEA,IAAA,IAAI,OAAO,GAAA;AACT,QAAA,OAAO,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;IACjD;wGA/FW,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAtB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,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"}
|
|
@@ -0,0 +1,252 @@
|
|
|
1
|
+
import { XSItemTypeComponent } from './xsmusices-ui.mjs';
|
|
2
|
+
import { m as mockArtists, a as mockEvents, b as mockSites, c as mockMedia, d as mockUsers, e as mockOrganizations, f as mockEquipment, g as mockTrackings } from './xsmusices-ui-index-DRXscULI.mjs';
|
|
3
|
+
|
|
4
|
+
const story = {
|
|
5
|
+
id: 'item-type',
|
|
6
|
+
name: 'Item Type',
|
|
7
|
+
type: 'component',
|
|
8
|
+
subtype: 'UI',
|
|
9
|
+
status: 'active',
|
|
10
|
+
usage: ['admin', 'app', 'monitor'],
|
|
11
|
+
updated: '2026-01-26T23:04:09.996Z',
|
|
12
|
+
created: '2026-01-11T12:51:28.669Z',
|
|
13
|
+
description: 'Componente completamente refactorizado con arquitectura modular. Cada tipo de item tiene su propio componente especializado: artist, user, lastLogin, lastVisit, y tracking. El componente principal delega a componentes específicos para mejor mantenibilidad. Componente de 2 líneas para mostrar items de tipo con imagen, nombre y segunda línea contextual.',
|
|
14
|
+
component: XSItemTypeComponent,
|
|
15
|
+
selector: 'xs-item-type',
|
|
16
|
+
inputs: [
|
|
17
|
+
{
|
|
18
|
+
key: 'item',
|
|
19
|
+
label: 'Item',
|
|
20
|
+
type: 'json',
|
|
21
|
+
default: {},
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
key: 'itemType',
|
|
25
|
+
label: 'Item Type',
|
|
26
|
+
type: 'select',
|
|
27
|
+
options: [
|
|
28
|
+
'artist',
|
|
29
|
+
'event',
|
|
30
|
+
'site',
|
|
31
|
+
'playlist',
|
|
32
|
+
'organization',
|
|
33
|
+
'user',
|
|
34
|
+
'userStats',
|
|
35
|
+
'lastLogin',
|
|
36
|
+
'equipment',
|
|
37
|
+
'lastVisit',
|
|
38
|
+
],
|
|
39
|
+
default: 'artist',
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
key: 'isLink',
|
|
43
|
+
label: 'Is Link',
|
|
44
|
+
type: 'boolean',
|
|
45
|
+
default: true,
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
key: 'showChevron',
|
|
49
|
+
label: 'Show Chevron',
|
|
50
|
+
type: 'boolean',
|
|
51
|
+
default: false,
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
key: 'size',
|
|
55
|
+
label: 'Size',
|
|
56
|
+
type: 'select',
|
|
57
|
+
options: ['normal', 'small'],
|
|
58
|
+
default: 'normal',
|
|
59
|
+
},
|
|
60
|
+
],
|
|
61
|
+
examples: [
|
|
62
|
+
{
|
|
63
|
+
name: 'Artista',
|
|
64
|
+
description: 'Artista española mostrada con nombre y país',
|
|
65
|
+
inputs: {
|
|
66
|
+
item: mockArtists[0], // Fatima Hajji
|
|
67
|
+
itemType: 'artist',
|
|
68
|
+
showChevron: false,
|
|
69
|
+
},
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
name: 'Evento',
|
|
73
|
+
description: 'Evento mostrado con formato "Nombre @ Lugar - Fecha" e información de ubicación',
|
|
74
|
+
inputs: {
|
|
75
|
+
item: mockEvents[0], // Hale-Bopp Vol.4
|
|
76
|
+
itemType: 'event',
|
|
77
|
+
showChevron: true,
|
|
78
|
+
},
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
name: 'Club con Región',
|
|
82
|
+
description: 'Club mostrado con región y país',
|
|
83
|
+
inputs: {
|
|
84
|
+
item: mockSites[0], // Smut Athens
|
|
85
|
+
itemType: 'site',
|
|
86
|
+
showChevron: false,
|
|
87
|
+
},
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
name: 'Media con Artistas',
|
|
91
|
+
description: 'Media mostrado con título "Nombre - Lugar" y segunda línea con artistas sin @',
|
|
92
|
+
inputs: {
|
|
93
|
+
item: mockMedia[0], // Opening Vinyl Set
|
|
94
|
+
itemType: 'media',
|
|
95
|
+
showChevron: false,
|
|
96
|
+
},
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
name: 'Usuario',
|
|
100
|
+
description: 'Usuario mostrado con nombre y país',
|
|
101
|
+
inputs: {
|
|
102
|
+
item: mockUsers[0], // JoseXS
|
|
103
|
+
itemType: 'user',
|
|
104
|
+
showChevron: false,
|
|
105
|
+
},
|
|
106
|
+
},
|
|
107
|
+
{
|
|
108
|
+
name: 'Usuario con Estadísticas',
|
|
109
|
+
description: 'Usuario mostrado con nombre y estadísticas (value y unit) a la derecha',
|
|
110
|
+
inputs: {
|
|
111
|
+
item: { ...mockUsers[0], value: 880, unit: 'likes' },
|
|
112
|
+
itemType: 'userStats',
|
|
113
|
+
showChevron: false,
|
|
114
|
+
},
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
name: 'Artista con Seguidores',
|
|
118
|
+
description: 'Artista mostrado con número de seguidores',
|
|
119
|
+
inputs: {
|
|
120
|
+
item: {
|
|
121
|
+
...mockArtists[0],
|
|
122
|
+
value: 15420,
|
|
123
|
+
unit: 'seguidores',
|
|
124
|
+
},
|
|
125
|
+
itemType: 'artist',
|
|
126
|
+
showChevron: true,
|
|
127
|
+
},
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
name: 'Evento con Asistentes',
|
|
131
|
+
description: 'Evento mostrado con número de asistentes confirmados',
|
|
132
|
+
inputs: {
|
|
133
|
+
item: {
|
|
134
|
+
...mockEvents[0],
|
|
135
|
+
value: 250,
|
|
136
|
+
unit: 'asistentes',
|
|
137
|
+
},
|
|
138
|
+
itemType: 'event',
|
|
139
|
+
showChevron: true,
|
|
140
|
+
},
|
|
141
|
+
},
|
|
142
|
+
{
|
|
143
|
+
name: 'Playlist con Reproducciones',
|
|
144
|
+
description: 'Playlist mostrada con número de reproducciones',
|
|
145
|
+
inputs: {
|
|
146
|
+
item: {
|
|
147
|
+
id: 'playlist-1',
|
|
148
|
+
name: 'Éxitos del 2026',
|
|
149
|
+
description: 'Los mejores hits del año',
|
|
150
|
+
trackCount: 25,
|
|
151
|
+
duration: '2h 15m',
|
|
152
|
+
},
|
|
153
|
+
itemType: 'playlist',
|
|
154
|
+
value: 125000,
|
|
155
|
+
unit: 'reproducciones',
|
|
156
|
+
showChevron: true,
|
|
157
|
+
},
|
|
158
|
+
},
|
|
159
|
+
{
|
|
160
|
+
name: 'Item Simple',
|
|
161
|
+
description: 'Item simple con título y valor',
|
|
162
|
+
inputs: {
|
|
163
|
+
item: {
|
|
164
|
+
title: 'Reproducciones',
|
|
165
|
+
value: 1250,
|
|
166
|
+
label: 'esta semana',
|
|
167
|
+
},
|
|
168
|
+
itemType: 'userStats',
|
|
169
|
+
showChevron: false,
|
|
170
|
+
},
|
|
171
|
+
},
|
|
172
|
+
{
|
|
173
|
+
name: 'Organización',
|
|
174
|
+
description: 'Organización mostrada con nombre y país',
|
|
175
|
+
inputs: {
|
|
176
|
+
item: mockOrganizations[0], // XSMusic Productions
|
|
177
|
+
itemType: 'organization',
|
|
178
|
+
showChevron: false,
|
|
179
|
+
},
|
|
180
|
+
},
|
|
181
|
+
{
|
|
182
|
+
name: 'Equipo',
|
|
183
|
+
description: 'Equipo mostrado con nombre y país',
|
|
184
|
+
inputs: {
|
|
185
|
+
item: mockEquipment[0], // Pioneer DJ XDJ-1000
|
|
186
|
+
itemType: 'equipment',
|
|
187
|
+
showCountry: true,
|
|
188
|
+
showChevron: false,
|
|
189
|
+
},
|
|
190
|
+
},
|
|
191
|
+
{
|
|
192
|
+
name: 'Last Login',
|
|
193
|
+
description: 'Usuario con información de último login integrada (sin slots)',
|
|
194
|
+
inputs: {
|
|
195
|
+
item: mockUsers[0],
|
|
196
|
+
itemType: 'lastLogin',
|
|
197
|
+
showCountry: false,
|
|
198
|
+
showChevron: false,
|
|
199
|
+
size: 'small',
|
|
200
|
+
},
|
|
201
|
+
template: `
|
|
202
|
+
<xs-item-type [item]="item" [itemType]="'lastLogin'" [showChevron]="false"></xs-item-type>
|
|
203
|
+
`,
|
|
204
|
+
},
|
|
205
|
+
{
|
|
206
|
+
name: 'Tracking',
|
|
207
|
+
description: 'Seguimiento de acción del sistema con información de usuario',
|
|
208
|
+
inputs: {
|
|
209
|
+
item: mockTrackings[1],
|
|
210
|
+
itemType: 'tracking',
|
|
211
|
+
showChevron: true,
|
|
212
|
+
size: 'small',
|
|
213
|
+
},
|
|
214
|
+
template: `
|
|
215
|
+
<xs-item-type [item]="item" [itemType]="'tracking'" [showChevron]="true"></xs-item-type>
|
|
216
|
+
`,
|
|
217
|
+
},
|
|
218
|
+
{
|
|
219
|
+
name: 'Last Visit',
|
|
220
|
+
description: 'Última visita a un item con información del dispositivo y usuario',
|
|
221
|
+
inputs: {
|
|
222
|
+
item: {
|
|
223
|
+
type: 'artist',
|
|
224
|
+
name: 'Fatima Hajji',
|
|
225
|
+
artist: mockArtists[0], // Fatima Hajji
|
|
226
|
+
deviceBrand: 'Android',
|
|
227
|
+
appType: 'mobile',
|
|
228
|
+
deviceCountry: 'es',
|
|
229
|
+
user: mockUsers[0], // JoseXS
|
|
230
|
+
created: '2026-01-09T17:30:00.000Z',
|
|
231
|
+
},
|
|
232
|
+
itemType: 'lastVisit',
|
|
233
|
+
showChevron: false,
|
|
234
|
+
size: 'small',
|
|
235
|
+
},
|
|
236
|
+
template: `
|
|
237
|
+
<xs-item-type [item]="item" [itemType]="'lastVisit'" [showChevron]="false"></xs-item-type>
|
|
238
|
+
`,
|
|
239
|
+
},
|
|
240
|
+
],
|
|
241
|
+
multilanguage: false,
|
|
242
|
+
notes: [],
|
|
243
|
+
coverage: {
|
|
244
|
+
"statements": 13,
|
|
245
|
+
"branches": 0,
|
|
246
|
+
"functions": 0,
|
|
247
|
+
"lines": 13
|
|
248
|
+
},
|
|
249
|
+
};
|
|
250
|
+
|
|
251
|
+
export { story };
|
|
252
|
+
//# sourceMappingURL=xsmusices-ui-xs-item-type.xsstory-DUeCnW0R.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"xsmusices-ui-xs-item-type.xsstory-DUeCnW0R.mjs","sources":["../../../projects/xs-ui/src/lib/components/ui/items/type/xs-item-type.xsstory.ts"],"sourcesContent":["import { StoryMeta } from '../../../../story.types';\nimport { XSItemTypeComponent } from './xs-item-type.component';\nimport {\n mockArtists,\n mockEvents,\n mockSites,\n mockMedia,\n mockUsers,\n mockOrganizations,\n mockEquipment,\n mockTrackings,\n} from '../../../../mocks';\n\nexport const story: StoryMeta = {\n id: 'item-type',\n name: 'Item Type',\n type: 'component',\n subtype: 'UI',\n status: 'active',\n usage: ['admin', 'app', 'monitor'],\n updated: '2026-01-26T23:04:09.996Z',\n created: '2026-01-11T12:51:28.669Z',\n description:\n 'Componente completamente refactorizado con arquitectura modular. Cada tipo de item tiene su propio componente especializado: artist, user, lastLogin, lastVisit, y tracking. El componente principal delega a componentes específicos para mejor mantenibilidad. Componente de 2 líneas para mostrar items de tipo con imagen, nombre y segunda línea contextual.',\n component: XSItemTypeComponent,\n selector: 'xs-item-type',\n inputs: [\n {\n key: 'item',\n label: 'Item',\n type: 'json',\n default: {},\n },\n {\n key: 'itemType',\n label: 'Item Type',\n type: 'select',\n options: [\n 'artist',\n 'event',\n 'site',\n 'playlist',\n 'organization',\n 'user',\n 'userStats',\n 'lastLogin',\n 'equipment',\n 'lastVisit',\n ],\n default: 'artist',\n },\n {\n key: 'isLink',\n label: 'Is Link',\n type: 'boolean',\n default: true,\n },\n {\n key: 'showChevron',\n label: 'Show Chevron',\n type: 'boolean',\n default: false,\n },\n {\n key: 'size',\n label: 'Size',\n type: 'select',\n options: ['normal', 'small'],\n default: 'normal',\n },\n ],\n examples: [\n {\n name: 'Artista',\n description: 'Artista española mostrada con nombre y país',\n inputs: {\n item: mockArtists[0], // Fatima Hajji\n itemType: 'artist',\n\n showChevron: false,\n },\n },\n {\n name: 'Evento',\n description:\n 'Evento mostrado con formato \"Nombre @ Lugar - Fecha\" e información de ubicación',\n inputs: {\n item: mockEvents[0], // Hale-Bopp Vol.4\n itemType: 'event',\n showChevron: true,\n },\n },\n {\n name: 'Club con Región',\n description: 'Club mostrado con región y país',\n inputs: {\n item: mockSites[0], // Smut Athens\n itemType: 'site',\n showChevron: false,\n },\n },\n {\n name: 'Media con Artistas',\n description:\n 'Media mostrado con título \"Nombre - Lugar\" y segunda línea con artistas sin @',\n inputs: {\n item: mockMedia[0], // Opening Vinyl Set\n itemType: 'media',\n showChevron: false,\n },\n },\n {\n name: 'Usuario',\n description: 'Usuario mostrado con nombre y país',\n inputs: {\n item: mockUsers[0], // JoseXS\n itemType: 'user',\n showChevron: false,\n },\n },\n {\n name: 'Usuario con Estadísticas',\n description:\n 'Usuario mostrado con nombre y estadísticas (value y unit) a la derecha',\n inputs: {\n item: { ...mockUsers[0], value: 880, unit: 'likes' },\n itemType: 'userStats',\n showChevron: false,\n },\n },\n {\n name: 'Artista con Seguidores',\n description: 'Artista mostrado con número de seguidores',\n inputs: {\n item: {\n ...mockArtists[0],\n value: 15420,\n unit: 'seguidores',\n },\n itemType: 'artist',\n showChevron: true,\n },\n },\n {\n name: 'Evento con Asistentes',\n description:\n 'Evento mostrado con número de asistentes confirmados',\n inputs: {\n item: {\n ...mockEvents[0],\n value: 250,\n unit: 'asistentes',\n },\n itemType: 'event',\n showChevron: true,\n },\n },\n {\n name: 'Playlist con Reproducciones',\n description:\n 'Playlist mostrada con número de reproducciones',\n inputs: {\n item: {\n id: 'playlist-1',\n name: 'Éxitos del 2026',\n description: 'Los mejores hits del año',\n trackCount: 25,\n duration: '2h 15m',\n },\n itemType: 'playlist',\n value: 125000,\n unit: 'reproducciones',\n showChevron: true,\n },\n },\n {\n name: 'Item Simple',\n description: 'Item simple con título y valor',\n inputs: {\n item: {\n title: 'Reproducciones',\n value: 1250,\n label: 'esta semana',\n },\n itemType: 'userStats',\n showChevron: false,\n },\n },\n {\n name: 'Organización',\n description: 'Organización mostrada con nombre y país',\n inputs: {\n item: mockOrganizations[0], // XSMusic Productions\n itemType: 'organization',\n showChevron: false,\n },\n },\n {\n name: 'Equipo',\n description: 'Equipo mostrado con nombre y país',\n inputs: {\n item: mockEquipment[0], // Pioneer DJ XDJ-1000\n itemType: 'equipment',\n showCountry: true,\n showChevron: false,\n },\n },\n {\n name: 'Last Login',\n description:\n 'Usuario con información de último login integrada (sin slots)',\n inputs: {\n item: mockUsers[0],\n itemType: 'lastLogin',\n showCountry: false,\n showChevron: false,\n size: 'small',\n },\n template: `\n <xs-item-type [item]=\"item\" [itemType]=\"'lastLogin'\" [showChevron]=\"false\"></xs-item-type>\n `,\n },\n {\n name: 'Tracking',\n description:\n 'Seguimiento de acción del sistema con información de usuario',\n inputs: {\n item: mockTrackings[1],\n itemType: 'tracking',\n showChevron: true,\n size: 'small',\n },\n template: `\n <xs-item-type [item]=\"item\" [itemType]=\"'tracking'\" [showChevron]=\"true\"></xs-item-type>\n `,\n },\n {\n name: 'Last Visit',\n description:\n 'Última visita a un item con información del dispositivo y usuario',\n inputs: {\n item: {\n type: 'artist',\n name: 'Fatima Hajji',\n artist: mockArtists[0], // Fatima Hajji\n deviceBrand: 'Android',\n appType: 'mobile',\n deviceCountry: 'es',\n user: mockUsers[0], // JoseXS\n created: '2026-01-09T17:30:00.000Z',\n },\n itemType: 'lastVisit',\n showChevron: false,\n size: 'small',\n },\n template: `\n <xs-item-type [item]=\"item\" [itemType]=\"'lastVisit'\" [showChevron]=\"false\"></xs-item-type>\n `,\n },\n ],\n multilanguage: false,\n notes: [],\n coverage: {\n \"statements\": 13,\n \"branches\": 0,\n \"functions\": 0,\n \"lines\": 13\n},\n};\n"],"names":[],"mappings":"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"}
|