tikal-ui-components 0.8.2 → 0.9.1

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.
@@ -1,6 +1,6 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { Pipe, input, output, Component, model, signal } from '@angular/core';
3
- import { PIcon, Spinner } from '@primeicons/angular';
3
+ import { PIcon, Spinner, User } from '@primeicons/angular';
4
4
  import * as i1 from 'primeng/button';
5
5
  import { ButtonModule } from 'primeng/button';
6
6
  import * as i1$1 from 'primeng/inputtext';
@@ -10,6 +10,7 @@ import * as i1$2 from 'primeng/skeleton';
10
10
  import { SkeletonModule } from 'primeng/skeleton';
11
11
  import * as i1$3 from 'primeng/chip';
12
12
  import { ChipModule } from 'primeng/chip';
13
+ import { TranslocoDirective } from '@jsverse/transloco';
13
14
 
14
15
  class EnumMapPipe {
15
16
  transform(value, enumMap, defaultValue) {
@@ -180,6 +181,58 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImpor
180
181
  args: [{ selector: 'tikal-chip', imports: [ChipModule, PIcon], template: "<p-chip [label]=\"label()\">\n @if (icon()) {\n <svg [pIcon]=\"icon()\"></svg>\n }\n</p-chip>\n" }]
181
182
  }], propDecorators: { icon: [{ type: i0.Input, args: [{ isSignal: true, alias: "icon", required: false }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: true }] }] } });
182
183
 
184
+ class EmptyPlayerSlotComponent {
185
+ /** Is the player currently loading? */
186
+ isLoading = input(false, /* @ts-ignore */
187
+ ...(ngDevMode ? [{ debugName: "isLoading" }] : /* istanbul ignore next */ []));
188
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: EmptyPlayerSlotComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
189
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.3", type: EmptyPlayerSlotComponent, isStandalone: true, selector: "tikal-empty-player-slot", inputs: { isLoading: { classPropertyName: "isLoading", publicName: "isLoading", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "@if (isLoading()) {\n <tikal-skeleton />\n} @else {\n <ng-container *transloco=\"let t; prefix: 'empty-player-slot'\">\n <span class=\"dot\"></span>\n <p>{{ t('open-slot') }}</p>\n </ng-container>\n}\n", styles: [":host{display:flex;flex-direction:row;align-items:center;height:3.25rem;padding:1rem;gap:.75rem;background-color:var(--p-surface-100)}:host-context(.dark) :host{background-color:var(--p-surface-800)}.dot{width:.75rem;height:.75rem;border-radius:50%;background-color:var(--p-surface-400)}:host-context(.dark) .dot{background-color:var(--p-surface-600)}p{margin:0;color:var(--p-surface-500)}:host-context(.dark) p{color:var(--p-surface-400)}tikal-skeleton{width:100%}\n"], dependencies: [{ kind: "directive", type: TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }, { kind: "component", type: SkeletonComponent, selector: "tikal-skeleton" }] });
190
+ }
191
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: EmptyPlayerSlotComponent, decorators: [{
192
+ type: Component,
193
+ args: [{ selector: 'tikal-empty-player-slot', imports: [TranslocoDirective, SkeletonComponent], template: "@if (isLoading()) {\n <tikal-skeleton />\n} @else {\n <ng-container *transloco=\"let t; prefix: 'empty-player-slot'\">\n <span class=\"dot\"></span>\n <p>{{ t('open-slot') }}</p>\n </ng-container>\n}\n", styles: [":host{display:flex;flex-direction:row;align-items:center;height:3.25rem;padding:1rem;gap:.75rem;background-color:var(--p-surface-100)}:host-context(.dark) :host{background-color:var(--p-surface-800)}.dot{width:.75rem;height:.75rem;border-radius:50%;background-color:var(--p-surface-400)}:host-context(.dark) .dot{background-color:var(--p-surface-600)}p{margin:0;color:var(--p-surface-500)}:host-context(.dark) p{color:var(--p-surface-400)}tikal-skeleton{width:100%}\n"] }]
194
+ }], propDecorators: { isLoading: [{ type: i0.Input, args: [{ isSignal: true, alias: "isLoading", required: false }] }] } });
195
+
196
+ class PlayerSlotComponent {
197
+ /** What is the name of the player? */
198
+ name = input.required(/* @ts-ignore */
199
+ ...(ngDevMode ? [{ debugName: "name" }] : /* istanbul ignore next */ []));
200
+ /** What is the colour of the player? */
201
+ colour = input.required(/* @ts-ignore */
202
+ ...(ngDevMode ? [{ debugName: "colour" }] : /* istanbul ignore next */ []));
203
+ /** @ignore */
204
+ colourMap = {
205
+ red: 'var(--p-red-500)',
206
+ green: 'var(--p-green-500)',
207
+ blue: 'var(--p-blue-500)',
208
+ yellow: 'var(--p-yellow-500)',
209
+ };
210
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: PlayerSlotComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
211
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.3", type: PlayerSlotComponent, isStandalone: true, selector: "tikal-player-slot", inputs: { name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: true, transformFunction: null }, colour: { classPropertyName: "colour", publicName: "colour", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: "<span class=\"dot\" [style.background-color]=\"colour() | enumMap: colourMap\"></span>\n<p>{{ name() }}</p>\n", styles: [":host{display:flex;flex-direction:row;align-items:center;height:3.25rem;padding:1rem;gap:.75rem;background-color:var(--p-surface-100)}:host-context(.dark) :host{background-color:var(--p-surface-800)}.dot{width:.75rem;height:.75rem;border-radius:50%}p{margin:0}\n"], dependencies: [{ kind: "pipe", type: EnumMapPipe, name: "enumMap" }] });
212
+ }
213
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: PlayerSlotComponent, decorators: [{
214
+ type: Component,
215
+ args: [{ selector: 'tikal-player-slot', imports: [EnumMapPipe], template: "<span class=\"dot\" [style.background-color]=\"colour() | enumMap: colourMap\"></span>\n<p>{{ name() }}</p>\n", styles: [":host{display:flex;flex-direction:row;align-items:center;height:3.25rem;padding:1rem;gap:.75rem;background-color:var(--p-surface-100)}:host-context(.dark) :host{background-color:var(--p-surface-800)}.dot{width:.75rem;height:.75rem;border-radius:50%}p{margin:0}\n"] }]
216
+ }], propDecorators: { name: [{ type: i0.Input, args: [{ isSignal: true, alias: "name", required: true }] }], colour: [{ type: i0.Input, args: [{ isSignal: true, alias: "colour", required: true }] }] } });
217
+
218
+ class PlayerSlotListComponent {
219
+ /** How many players fit in the lobby? */
220
+ maxPlayers = input.required(/* @ts-ignore */
221
+ ...(ngDevMode ? [{ debugName: "maxPlayers" }] : /* istanbul ignore next */ []));
222
+ /** What players are currently in the lobby? */
223
+ players = input.required(/* @ts-ignore */
224
+ ...(ngDevMode ? [{ debugName: "players" }] : /* istanbul ignore next */ []));
225
+ /** Are the players currenlty loading? */
226
+ isLoading = input(false, /* @ts-ignore */
227
+ ...(ngDevMode ? [{ debugName: "isLoading" }] : /* istanbul ignore next */ []));
228
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: PlayerSlotListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
229
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.3", type: PlayerSlotListComponent, isStandalone: true, selector: "tikal-player-slot-list", inputs: { maxPlayers: { classPropertyName: "maxPlayers", publicName: "maxPlayers", isSignal: true, isRequired: true, transformFunction: null }, players: { classPropertyName: "players", publicName: "players", isSignal: true, isRequired: true, transformFunction: null }, isLoading: { classPropertyName: "isLoading", publicName: "isLoading", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<ng-container *transloco=\"let t; prefix: 'player-slot-list'\">\n <div class=\"header\">\n <span>{{ t('players') }}</span>\n <svg data-p-icon=\"user\"></svg>\n <span>{{ players().length }}/{{ maxPlayers() }}</span>\n </div>\n <div class=\"players\">\n @if (isLoading()) {\n @for (empty of [].constructor(maxPlayers()); track $index) {\n <tikal-empty-player-slot [isLoading]=\"true\" />\n }\n } @else {\n @for (player of players(); track $index) {\n <tikal-player-slot [colour]=\"player.selectedColour\" [name]=\"player.name\" />\n }\n @for (empty of [].constructor(maxPlayers() - players().length); track $index) {\n <tikal-empty-player-slot />\n }\n }\n </div>\n</ng-container>\n", styles: [":host{display:flex;flex-direction:column;width:20rem}.players{border:var(--p-content-border-color) solid 1px;border-radius:var(--p-content-border-radius);overflow:hidden}.players>*+*{border-top:var(--p-content-border-color) solid 1px}.header{display:flex;flex-direction:row;align-items:center;gap:.5rem;padding:.5rem .1rem}\n"], dependencies: [{ kind: "component", type: PlayerSlotComponent, selector: "tikal-player-slot", inputs: ["name", "colour"] }, { kind: "component", type: EmptyPlayerSlotComponent, selector: "tikal-empty-player-slot", inputs: ["isLoading"] }, { kind: "component", type: User, selector: "svg[data-p-icon=\"user\"]" }, { kind: "directive", type: TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }] });
230
+ }
231
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: PlayerSlotListComponent, decorators: [{
232
+ type: Component,
233
+ args: [{ selector: 'tikal-player-slot-list', imports: [PlayerSlotComponent, EmptyPlayerSlotComponent, User, TranslocoDirective], template: "<ng-container *transloco=\"let t; prefix: 'player-slot-list'\">\n <div class=\"header\">\n <span>{{ t('players') }}</span>\n <svg data-p-icon=\"user\"></svg>\n <span>{{ players().length }}/{{ maxPlayers() }}</span>\n </div>\n <div class=\"players\">\n @if (isLoading()) {\n @for (empty of [].constructor(maxPlayers()); track $index) {\n <tikal-empty-player-slot [isLoading]=\"true\" />\n }\n } @else {\n @for (player of players(); track $index) {\n <tikal-player-slot [colour]=\"player.selectedColour\" [name]=\"player.name\" />\n }\n @for (empty of [].constructor(maxPlayers() - players().length); track $index) {\n <tikal-empty-player-slot />\n }\n }\n </div>\n</ng-container>\n", styles: [":host{display:flex;flex-direction:column;width:20rem}.players{border:var(--p-content-border-color) solid 1px;border-radius:var(--p-content-border-radius);overflow:hidden}.players>*+*{border-top:var(--p-content-border-color) solid 1px}.header{display:flex;flex-direction:row;align-items:center;gap:.5rem;padding:.5rem .1rem}\n"] }]
234
+ }], propDecorators: { maxPlayers: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxPlayers", required: true }] }], players: [{ type: i0.Input, args: [{ isSignal: true, alias: "players", required: true }] }], isLoading: [{ type: i0.Input, args: [{ isSignal: true, alias: "isLoading", required: false }] }] } });
235
+
183
236
  /*
184
237
  * Public API Surface of tikal-ui-components
185
238
  */
@@ -189,5 +242,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImpor
189
242
  * Generated bundle index. Do not edit.
190
243
  */
191
244
 
192
- export { ButtonComponent, ChatFormComponent, ChipComponent, InputComponent, PlayerCountComponent, SkeletonComponent };
245
+ export { ButtonComponent, ChatFormComponent, ChipComponent, EmptyPlayerSlotComponent, InputComponent, PlayerCountComponent, PlayerSlotComponent, PlayerSlotListComponent, SkeletonComponent };
193
246
  //# sourceMappingURL=tikal-ui-components.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"tikal-ui-components.mjs","sources":["../../../projects/tikal-ui-components/src/pipes/enum-map.ts","../../../projects/tikal-ui-components/src/lib/components/button/button.ts","../../../projects/tikal-ui-components/src/lib/components/button/button.html","../../../projects/tikal-ui-components/src/lib/components/input/input.ts","../../../projects/tikal-ui-components/src/lib/components/input/input.html","../../../projects/tikal-ui-components/src/lib/components/chat-form/chat-form.ts","../../../projects/tikal-ui-components/src/lib/components/chat-form/chat-form.html","../../../projects/tikal-ui-components/src/lib/components/skeleton/skeleton.ts","../../../projects/tikal-ui-components/src/lib/components/skeleton/skeleton.html","../../../projects/tikal-ui-components/src/lib/components/player-count/player-count.ts","../../../projects/tikal-ui-components/src/lib/components/player-count/player-count.html","../../../projects/tikal-ui-components/src/lib/components/chip/chip.ts","../../../projects/tikal-ui-components/src/lib/components/chip/chip.html","../../../projects/tikal-ui-components/src/public-api.ts","../../../projects/tikal-ui-components/src/tikal-ui-components.ts"],"sourcesContent":["import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'enumMap',\n})\nexport class EnumMapPipe<T> implements PipeTransform {\n transform(value: unknown, enumMap: object, defaultValue?: T): T {\n return enumMap[value as keyof typeof enumMap] ?? defaultValue ?? value;\n }\n}\n","import { Component, input, output } from '@angular/core';\nimport { PIcon, Spinner } from '@primeicons/angular';\nimport { ButtonModule } from 'primeng/button';\nimport { EnumMapPipe } from '../../../pipes/enum-map';\n\nexport type ButtonColour = 'primary' | 'secondary';\n\nexport type ButtonSize = 'small' | 'normal' | 'large';\n\nexport type ButtonType = 'button' | 'submit' | 'reset';\n\n@Component({\n selector: 'tikal-button',\n imports: [ButtonModule, PIcon, EnumMapPipe, Spinner],\n templateUrl: './button.html',\n styleUrl: './button.scss',\n})\nexport class ButtonComponent {\n /** What icon should the button display? */\n readonly icon = input<string>('');\n\n /** What colour should the button be? */\n readonly colour = input<ButtonColour>('primary');\n\n /** What size should the button be? */\n readonly size = input<ButtonSize>('normal');\n\n /** @ignore */\n readonly sizeMap = {\n normal: undefined,\n };\n\n /** What text should the button display? */\n readonly label = input<string>();\n\n /** Is the action related to the button currently running? */\n readonly isLoading = input<boolean>(false);\n\n /** Should the button have an outline? */\n readonly outline = input<boolean>(false);\n\n /** What type should the button be? */\n readonly type = input<ButtonType>('button');\n\n /** Should the button only appear as text? */\n readonly text = input<boolean>(false);\n\n /** @ignore */\n readonly clicked = output<void>();\n\n /** What form should the button belong to? */\n readonly form = input<string>();\n}\n","<button\n pButton\n [attr.form]=\"form()\"\n [disabled]=\"isLoading()\"\n [iconOnly]=\"!label()\"\n [outlined]=\"outline()\"\n [severity]=\"colour()\"\n [size]=\"size() | enumMap: sizeMap\"\n [type]=\"type()\"\n [variant]=\"text() ? 'text' : undefined\"\n (click)=\"clicked.emit()\"\n>\n @if (isLoading()) {\n <svg data-p-icon=\"spinner\" [spin]=\"true\"></svg>\n } @else if (icon()) {\n <svg [pIcon]=\"icon()\"></svg>\n }\n {{ label() }}\n</button>\n","import { Component, model, input } from '@angular/core';\nimport { FormValueControl } from '@angular/forms/signals';\nimport { InputTextModule } from 'primeng/inputtext';\n\n@Component({\n selector: 'tikal-input',\n imports: [InputTextModule],\n templateUrl: './input.html',\n styleUrl: './input.scss',\n})\nexport class InputComponent implements FormValueControl<string> {\n /** What value should the input have */\n readonly value = model('');\n\n /** Should the input be disabled */\n readonly disabled = input<boolean>(false);\n\n /** Is the content of the input invalid? */\n readonly invalid = input<boolean>(false);\n\n /** Is the input required? */\n readonly required = input<boolean>(false);\n\n /** Was the input touched */\n readonly touched = input<boolean>(false);\n\n /** What is the max input length? */\n readonly maxLength = input<number>();\n\n /** What is the label of the input element? */\n readonly label = input<string>();\n\n /** What placeholder should the input display? */\n readonly placeholder = input<string>();\n\n /** Should the input take the full widht? */\n readonly expand = input<boolean>(false);\n}\n","<input\n pInputText\n [ariaLabel]=\"label()\"\n [class.full-length]=\"expand()\"\n [disabled]=\"disabled()\"\n [invalid]=\"invalid() && touched()\"\n [maxLength]=\"maxLength()\"\n [placeholder]=\"placeholder()\"\n [required]=\"required()\"\n [value]=\"value()\"\n (input)=\"value.set($event.target.value)\"\n/>\n","import { Component, input, signal } from '@angular/core';\nimport { disabled, form, required, FormRoot, FormField, maxLength } from '@angular/forms/signals';\nimport { InputComponent } from '../input/input';\nimport { ButtonComponent } from '../button/button';\n\ntype ChatFormData = {\n message: string;\n};\n\n@Component({\n selector: 'tikal-chat-form',\n imports: [FormRoot, FormField, InputComponent, ButtonComponent],\n templateUrl: './chat-form.html',\n styleUrl: './chat-form.scss',\n})\nexport class ChatFormComponent {\n /** @ignore */\n private readonly chatFormData = signal<ChatFormData>({ message: '' });\n\n /** What should happen when the form is submitted? */\n readonly onSubmission = input.required<(message: string) => Promise<void>>();\n\n /** What placeholder should be displayed on the input? */\n readonly placeholder = input<string>();\n\n /** What is the max input length? */\n readonly maxLength = input<number>(50);\n\n /** What is the label of the input element? */\n readonly label = input<string>();\n\n /** @ignore */\n readonly chatForm = form(\n this.chatFormData,\n (schemaPath) => {\n required(schemaPath.message);\n maxLength(schemaPath.message, () => this.maxLength());\n disabled(schemaPath, { when: () => this.chatForm().submitting() });\n },\n {\n submission: {\n action: async (field) => {\n const message = field().value().message;\n\n await this.onSubmission()(message);\n\n field.message().reset('');\n },\n },\n },\n );\n}\n","<form [formRoot]=\"chatForm\">\n <tikal-input [formField]=\"chatForm.message\" [label]=\"label()\" [placeholder]=\"placeholder()\" />\n <tikal-button icon=\"send\" type=\"submit\" [isLoading]=\"chatForm().submitting()\" />\n</form>\n","import { Component } from '@angular/core';\nimport { SkeletonModule } from 'primeng/skeleton';\n\n@Component({\n selector: 'tikal-skeleton',\n imports: [SkeletonModule],\n templateUrl: './skeleton.html',\n styleUrl: './skeleton.scss',\n})\nexport class SkeletonComponent {}\n","<p-skeleton />\n","import { Component, input } from '@angular/core';\n\n@Component({\n selector: 'tikal-player-count',\n imports: [],\n templateUrl: './player-count.html',\n styleUrl: './player-count.scss',\n})\nexport class PlayerCountComponent {\n /** How many players are currently in the lobby? */\n readonly currentPlayers = input.required<number>();\n\n /** How many players fit in the lobby? */\n readonly maxPlayers = input.required<number>();\n}\n","<p>{{ currentPlayers() }}/{{ maxPlayers() }}</p>\n<div class=\"bar\">\n <div\n class=\"bar-fill\"\n [class.full]=\"currentPlayers() >= maxPlayers()\"\n [style.width]=\"(currentPlayers() / maxPlayers()) * 100 + '%'\"\n ></div>\n</div>\n","import { Component, input } from '@angular/core';\nimport { ChipModule } from 'primeng/chip';\nimport { PIcon } from '@primeicons/angular';\n\n@Component({\n selector: 'tikal-chip',\n imports: [ChipModule, PIcon],\n templateUrl: './chip.html',\n styleUrl: './chip.scss',\n})\nexport class ChipComponent {\n /** What icon should the chip display? */\n readonly icon = input<string>('');\n\n /** What text should the chip display? */\n readonly label = input.required<string>();\n}\n","<p-chip [label]=\"label()\">\n @if (icon()) {\n <svg [pIcon]=\"icon()\"></svg>\n }\n</p-chip>\n","/*\n * Public API Surface of tikal-ui-components\n */\n\n// Button\nexport * from './lib/components/button/button';\n\n// Input\nexport * from './lib/components/input/input';\n\n// Chat form\nexport * from './lib/components/chat-form/chat-form';\n\n// Skeleton\nexport * from './lib/components/skeleton/skeleton';\n\n// Player count\nexport * from './lib/components/player-count/player-count';\n\n// Chip\nexport * from './lib/components/chip/chip';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1"],"mappings":"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"}
1
+ {"version":3,"file":"tikal-ui-components.mjs","sources":["../../../projects/tikal-ui-components/src/pipes/enum-map.ts","../../../projects/tikal-ui-components/src/lib/components/button/button.ts","../../../projects/tikal-ui-components/src/lib/components/button/button.html","../../../projects/tikal-ui-components/src/lib/components/input/input.ts","../../../projects/tikal-ui-components/src/lib/components/input/input.html","../../../projects/tikal-ui-components/src/lib/components/chat-form/chat-form.ts","../../../projects/tikal-ui-components/src/lib/components/chat-form/chat-form.html","../../../projects/tikal-ui-components/src/lib/components/skeleton/skeleton.ts","../../../projects/tikal-ui-components/src/lib/components/skeleton/skeleton.html","../../../projects/tikal-ui-components/src/lib/components/player-count/player-count.ts","../../../projects/tikal-ui-components/src/lib/components/player-count/player-count.html","../../../projects/tikal-ui-components/src/lib/components/chip/chip.ts","../../../projects/tikal-ui-components/src/lib/components/chip/chip.html","../../../projects/tikal-ui-components/src/lib/components/empty-player-slot/empty-player-slot.ts","../../../projects/tikal-ui-components/src/lib/components/empty-player-slot/empty-player-slot.html","../../../projects/tikal-ui-components/src/lib/components/player-slot/player-slot.ts","../../../projects/tikal-ui-components/src/lib/components/player-slot/player-slot.html","../../../projects/tikal-ui-components/src/lib/components/player-slot-list/player-slot-list.ts","../../../projects/tikal-ui-components/src/lib/components/player-slot-list/player-slot-list.html","../../../projects/tikal-ui-components/src/public-api.ts","../../../projects/tikal-ui-components/src/tikal-ui-components.ts"],"sourcesContent":["import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'enumMap',\n})\nexport class EnumMapPipe<T> implements PipeTransform {\n transform(value: unknown, enumMap: object, defaultValue?: T): T {\n return enumMap[value as keyof typeof enumMap] ?? defaultValue ?? value;\n }\n}\n","import { Component, input, output } from '@angular/core';\nimport { PIcon, Spinner } from '@primeicons/angular';\nimport { ButtonModule } from 'primeng/button';\nimport { EnumMapPipe } from '../../../pipes/enum-map';\n\nexport type ButtonColour = 'primary' | 'secondary';\n\nexport type ButtonSize = 'small' | 'normal' | 'large';\n\nexport type ButtonType = 'button' | 'submit' | 'reset';\n\n@Component({\n selector: 'tikal-button',\n imports: [ButtonModule, PIcon, EnumMapPipe, Spinner],\n templateUrl: './button.html',\n styleUrl: './button.scss',\n})\nexport class ButtonComponent {\n /** What icon should the button display? */\n readonly icon = input<string>('');\n\n /** What colour should the button be? */\n readonly colour = input<ButtonColour>('primary');\n\n /** What size should the button be? */\n readonly size = input<ButtonSize>('normal');\n\n /** @ignore */\n readonly sizeMap = {\n normal: undefined,\n };\n\n /** What text should the button display? */\n readonly label = input<string>();\n\n /** Is the action related to the button currently running? */\n readonly isLoading = input<boolean>(false);\n\n /** Should the button have an outline? */\n readonly outline = input<boolean>(false);\n\n /** What type should the button be? */\n readonly type = input<ButtonType>('button');\n\n /** Should the button only appear as text? */\n readonly text = input<boolean>(false);\n\n /** @ignore */\n readonly clicked = output<void>();\n\n /** What form should the button belong to? */\n readonly form = input<string>();\n}\n","<button\n pButton\n [attr.form]=\"form()\"\n [disabled]=\"isLoading()\"\n [iconOnly]=\"!label()\"\n [outlined]=\"outline()\"\n [severity]=\"colour()\"\n [size]=\"size() | enumMap: sizeMap\"\n [type]=\"type()\"\n [variant]=\"text() ? 'text' : undefined\"\n (click)=\"clicked.emit()\"\n>\n @if (isLoading()) {\n <svg data-p-icon=\"spinner\" [spin]=\"true\"></svg>\n } @else if (icon()) {\n <svg [pIcon]=\"icon()\"></svg>\n }\n {{ label() }}\n</button>\n","import { Component, model, input } from '@angular/core';\nimport { FormValueControl } from '@angular/forms/signals';\nimport { InputTextModule } from 'primeng/inputtext';\n\n@Component({\n selector: 'tikal-input',\n imports: [InputTextModule],\n templateUrl: './input.html',\n styleUrl: './input.scss',\n})\nexport class InputComponent implements FormValueControl<string> {\n /** What value should the input have */\n readonly value = model('');\n\n /** Should the input be disabled */\n readonly disabled = input<boolean>(false);\n\n /** Is the content of the input invalid? */\n readonly invalid = input<boolean>(false);\n\n /** Is the input required? */\n readonly required = input<boolean>(false);\n\n /** Was the input touched */\n readonly touched = input<boolean>(false);\n\n /** What is the max input length? */\n readonly maxLength = input<number>();\n\n /** What is the label of the input element? */\n readonly label = input<string>();\n\n /** What placeholder should the input display? */\n readonly placeholder = input<string>();\n\n /** Should the input take the full widht? */\n readonly expand = input<boolean>(false);\n}\n","<input\n pInputText\n [ariaLabel]=\"label()\"\n [class.full-length]=\"expand()\"\n [disabled]=\"disabled()\"\n [invalid]=\"invalid() && touched()\"\n [maxLength]=\"maxLength()\"\n [placeholder]=\"placeholder()\"\n [required]=\"required()\"\n [value]=\"value()\"\n (input)=\"value.set($event.target.value)\"\n/>\n","import { Component, input, signal } from '@angular/core';\nimport { disabled, form, required, FormRoot, FormField, maxLength } from '@angular/forms/signals';\nimport { InputComponent } from '../input/input';\nimport { ButtonComponent } from '../button/button';\n\ntype ChatFormData = {\n message: string;\n};\n\n@Component({\n selector: 'tikal-chat-form',\n imports: [FormRoot, FormField, InputComponent, ButtonComponent],\n templateUrl: './chat-form.html',\n styleUrl: './chat-form.scss',\n})\nexport class ChatFormComponent {\n /** @ignore */\n private readonly chatFormData = signal<ChatFormData>({ message: '' });\n\n /** What should happen when the form is submitted? */\n readonly onSubmission = input.required<(message: string) => Promise<void>>();\n\n /** What placeholder should be displayed on the input? */\n readonly placeholder = input<string>();\n\n /** What is the max input length? */\n readonly maxLength = input<number>(50);\n\n /** What is the label of the input element? */\n readonly label = input<string>();\n\n /** @ignore */\n readonly chatForm = form(\n this.chatFormData,\n (schemaPath) => {\n required(schemaPath.message);\n maxLength(schemaPath.message, () => this.maxLength());\n disabled(schemaPath, { when: () => this.chatForm().submitting() });\n },\n {\n submission: {\n action: async (field) => {\n const message = field().value().message;\n\n await this.onSubmission()(message);\n\n field.message().reset('');\n },\n },\n },\n );\n}\n","<form [formRoot]=\"chatForm\">\n <tikal-input [formField]=\"chatForm.message\" [label]=\"label()\" [placeholder]=\"placeholder()\" />\n <tikal-button icon=\"send\" type=\"submit\" [isLoading]=\"chatForm().submitting()\" />\n</form>\n","import { Component } from '@angular/core';\nimport { SkeletonModule } from 'primeng/skeleton';\n\n@Component({\n selector: 'tikal-skeleton',\n imports: [SkeletonModule],\n templateUrl: './skeleton.html',\n styleUrl: './skeleton.scss',\n})\nexport class SkeletonComponent {}\n","<p-skeleton />\n","import { Component, input } from '@angular/core';\n\n@Component({\n selector: 'tikal-player-count',\n imports: [],\n templateUrl: './player-count.html',\n styleUrl: './player-count.scss',\n})\nexport class PlayerCountComponent {\n /** How many players are currently in the lobby? */\n readonly currentPlayers = input.required<number>();\n\n /** How many players fit in the lobby? */\n readonly maxPlayers = input.required<number>();\n}\n","<p>{{ currentPlayers() }}/{{ maxPlayers() }}</p>\n<div class=\"bar\">\n <div\n class=\"bar-fill\"\n [class.full]=\"currentPlayers() >= maxPlayers()\"\n [style.width]=\"(currentPlayers() / maxPlayers()) * 100 + '%'\"\n ></div>\n</div>\n","import { Component, input } from '@angular/core';\nimport { ChipModule } from 'primeng/chip';\nimport { PIcon } from '@primeicons/angular';\n\n@Component({\n selector: 'tikal-chip',\n imports: [ChipModule, PIcon],\n templateUrl: './chip.html',\n styleUrl: './chip.scss',\n})\nexport class ChipComponent {\n /** What icon should the chip display? */\n readonly icon = input<string>('');\n\n /** What text should the chip display? */\n readonly label = input.required<string>();\n}\n","<p-chip [label]=\"label()\">\n @if (icon()) {\n <svg [pIcon]=\"icon()\"></svg>\n }\n</p-chip>\n","import { Component, input } from '@angular/core';\nimport { TranslocoDirective } from '@jsverse/transloco';\nimport { SkeletonComponent } from '../skeleton/skeleton';\n\n@Component({\n selector: 'tikal-empty-player-slot',\n imports: [TranslocoDirective, SkeletonComponent],\n templateUrl: './empty-player-slot.html',\n styleUrl: './empty-player-slot.scss',\n})\nexport class EmptyPlayerSlotComponent {\n /** Is the player currently loading? */\n readonly isLoading = input<boolean>(false);\n}\n","@if (isLoading()) {\n <tikal-skeleton />\n} @else {\n <ng-container *transloco=\"let t; prefix: 'empty-player-slot'\">\n <span class=\"dot\"></span>\n <p>{{ t('open-slot') }}</p>\n </ng-container>\n}\n","import { Component, input } from '@angular/core';\nimport { EnumMapPipe } from '../../../pipes/enum-map';\n\nexport type PlayerColour = 'red' | 'black' | 'green' | 'blue' | 'yellow';\n\n@Component({\n selector: 'tikal-player-slot',\n imports: [EnumMapPipe],\n templateUrl: './player-slot.html',\n styleUrl: './player-slot.scss',\n})\nexport class PlayerSlotComponent {\n /** What is the name of the player? */\n readonly name = input.required<string>();\n\n /** What is the colour of the player? */\n readonly colour = input.required<PlayerColour>();\n\n /** @ignore */\n readonly colourMap = {\n red: 'var(--p-red-500)',\n green: 'var(--p-green-500)',\n blue: 'var(--p-blue-500)',\n yellow: 'var(--p-yellow-500)',\n };\n}\n","<span class=\"dot\" [style.background-color]=\"colour() | enumMap: colourMap\"></span>\n<p>{{ name() }}</p>\n","import { Component, input } from '@angular/core';\nimport { PlayerColour, PlayerSlotComponent } from '../player-slot/player-slot';\nimport { EmptyPlayerSlotComponent } from '../empty-player-slot/empty-player-slot';\nimport { User } from '@primeicons/angular';\nimport { TranslocoDirective } from '@jsverse/transloco';\n\nexport type PlayerSlotData = {\n name: string;\n selectedColour: PlayerColour;\n};\n\n@Component({\n selector: 'tikal-player-slot-list',\n imports: [PlayerSlotComponent, EmptyPlayerSlotComponent, User, TranslocoDirective],\n templateUrl: './player-slot-list.html',\n styleUrl: './player-slot-list.scss',\n})\nexport class PlayerSlotListComponent {\n /** How many players fit in the lobby? */\n readonly maxPlayers = input.required<number>();\n\n /** What players are currently in the lobby? */\n readonly players = input.required<PlayerSlotData[]>();\n\n /** Are the players currenlty loading? */\n readonly isLoading = input<boolean>(false);\n}\n","<ng-container *transloco=\"let t; prefix: 'player-slot-list'\">\n <div class=\"header\">\n <span>{{ t('players') }}</span>\n <svg data-p-icon=\"user\"></svg>\n <span>{{ players().length }}/{{ maxPlayers() }}</span>\n </div>\n <div class=\"players\">\n @if (isLoading()) {\n @for (empty of [].constructor(maxPlayers()); track $index) {\n <tikal-empty-player-slot [isLoading]=\"true\" />\n }\n } @else {\n @for (player of players(); track $index) {\n <tikal-player-slot [colour]=\"player.selectedColour\" [name]=\"player.name\" />\n }\n @for (empty of [].constructor(maxPlayers() - players().length); track $index) {\n <tikal-empty-player-slot />\n }\n }\n </div>\n</ng-container>\n","/*\n * Public API Surface of tikal-ui-components\n */\n\n// Button\nexport * from './lib/components/button/button';\n\n// Input\nexport * from './lib/components/input/input';\n\n// Chat form\nexport * from './lib/components/chat-form/chat-form';\n\n// Skeleton\nexport * from './lib/components/skeleton/skeleton';\n\n// Player count\nexport * from './lib/components/player-count/player-count';\n\n// Chip\nexport * from './lib/components/chip/chip';\n\n// Empty player slot\nexport * from './lib/components/empty-player-slot/empty-player-slot';\n\n// Player slot\nexport * from './lib/components/player-slot/player-slot';\n\n// Player slot list\nexport * from './lib/components/player-slot-list/player-slot-list';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tikal-ui-components",
3
- "version": "0.8.2",
3
+ "version": "0.9.1",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/Tikal-online/tikal-game.git"
@@ -10,6 +10,7 @@
10
10
  "@angular/core": "^22.1.0",
11
11
  "@angular/forms": "^22.1.0",
12
12
  "@angular/router": "^22.1.0",
13
+ "@jsverse/transloco": "^8.4.0",
13
14
  "@primeuix/themes": "^3.0.0",
14
15
  "@primeicons/angular": "^8.0.0",
15
16
  "primeng": "^22.1.0"
@@ -100,5 +100,44 @@ declare class ChipComponent {
100
100
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<ChipComponent, "tikal-chip", never, { "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
101
101
  }
102
102
 
103
- export { ButtonComponent, ChatFormComponent, ChipComponent, InputComponent, PlayerCountComponent, SkeletonComponent };
104
- export type { ButtonColour, ButtonSize, ButtonType };
103
+ declare class EmptyPlayerSlotComponent {
104
+ /** Is the player currently loading? */
105
+ readonly isLoading: _angular_core.InputSignal<boolean>;
106
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<EmptyPlayerSlotComponent, never>;
107
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<EmptyPlayerSlotComponent, "tikal-empty-player-slot", never, { "isLoading": { "alias": "isLoading"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
108
+ }
109
+
110
+ type PlayerColour = 'red' | 'black' | 'green' | 'blue' | 'yellow';
111
+ declare class PlayerSlotComponent {
112
+ /** What is the name of the player? */
113
+ readonly name: _angular_core.InputSignal<string>;
114
+ /** What is the colour of the player? */
115
+ readonly colour: _angular_core.InputSignal<PlayerColour>;
116
+ /** @ignore */
117
+ readonly colourMap: {
118
+ red: string;
119
+ green: string;
120
+ blue: string;
121
+ yellow: string;
122
+ };
123
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<PlayerSlotComponent, never>;
124
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<PlayerSlotComponent, "tikal-player-slot", never, { "name": { "alias": "name"; "required": true; "isSignal": true; }; "colour": { "alias": "colour"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
125
+ }
126
+
127
+ type PlayerSlotData = {
128
+ name: string;
129
+ selectedColour: PlayerColour;
130
+ };
131
+ declare class PlayerSlotListComponent {
132
+ /** How many players fit in the lobby? */
133
+ readonly maxPlayers: _angular_core.InputSignal<number>;
134
+ /** What players are currently in the lobby? */
135
+ readonly players: _angular_core.InputSignal<PlayerSlotData[]>;
136
+ /** Are the players currenlty loading? */
137
+ readonly isLoading: _angular_core.InputSignal<boolean>;
138
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<PlayerSlotListComponent, never>;
139
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<PlayerSlotListComponent, "tikal-player-slot-list", never, { "maxPlayers": { "alias": "maxPlayers"; "required": true; "isSignal": true; }; "players": { "alias": "players"; "required": true; "isSignal": true; }; "isLoading": { "alias": "isLoading"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
140
+ }
141
+
142
+ export { ButtonComponent, ChatFormComponent, ChipComponent, EmptyPlayerSlotComponent, InputComponent, PlayerCountComponent, PlayerSlotComponent, PlayerSlotListComponent, SkeletonComponent };
143
+ export type { ButtonColour, ButtonSize, ButtonType, PlayerColour, PlayerSlotData };