@ngflux/ngflux 2.1.1 → 2.2.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.
- package/fesm2022/ngflux-ngflux.mjs +701 -4
- package/fesm2022/ngflux-ngflux.mjs.map +1 -1
- package/lib/components/actions/actions.component.scss +13 -0
- package/lib/components/frame/frame.component.scss +228 -0
- package/lib/components/frame/header-menu/header-menu.component.scss +102 -0
- package/lib/components/frame/side-menu/side-menu.component.scss +83 -0
- package/lib/components/input/pin/pin.component.scss +38 -0
- package/lib/components/input/select/items/items.component.scss +73 -0
- package/lib/components/input/select/select.component.scss +149 -0
- package/lib/components/tab/group/group.component.scss +3 -0
- package/lib/components/tab/navbar/navbar.component.scss +10 -0
- package/lib/components/tab/panel/panel.component.scss +3 -0
- package/lib/components/tab/tab.component.scss +3 -0
- package/package.json +1 -1
- package/scss/features/_index.scss +1 -0
- package/scss/features/icons.scss +34 -0
- package/scss/features/tab.scss +31 -0
- package/types/ngflux-ngflux.d.ts +199 -3
package/scss/features/icons.scss
CHANGED
|
@@ -22,6 +22,40 @@
|
|
|
22
22
|
&.search::before { content: "\e8b6"; }
|
|
23
23
|
&.close::before { content: "\e5cd"; }
|
|
24
24
|
|
|
25
|
+
&.arrow-drop-down::before { content: "\e5c5"; }
|
|
26
|
+
&.arrow-drop-up::before { content: "\e5c7"; }
|
|
27
|
+
|
|
28
|
+
&.unfold-more::before { content: "\e5d7"; }
|
|
29
|
+
&.unfold-less::before { content: "\e5d6"; }
|
|
30
|
+
|
|
25
31
|
&.chevron-left::before { content: "\e5cb"; }
|
|
26
32
|
&.chevron-right::before { content: "\e5cc"; }
|
|
33
|
+
|
|
34
|
+
&.add::before { content: "\e145"; }
|
|
35
|
+
&.edit::before { content: "\e3c9"; }
|
|
36
|
+
&.eye::before { content: "\e8f4"; }
|
|
37
|
+
&.trash::before { content: "\e872"; }
|
|
38
|
+
&.refresh::before { content: "\e5d5"; }
|
|
39
|
+
&.close::before { content: "\e5cd"; }
|
|
40
|
+
&.filter::before { content: "\ef4f"; }
|
|
41
|
+
&.upgrade::before { content: "\f0fb"; }
|
|
42
|
+
&.download::before { content: "\f090"; }
|
|
43
|
+
&.upload::before { content: "\f09b"; }
|
|
44
|
+
|
|
45
|
+
&.heart::before { content: "\e87d"; }
|
|
46
|
+
&.heart-plus::before { content: "\f884"; }
|
|
47
|
+
&.heart-minus::before { content: "\f883"; }
|
|
48
|
+
&.heart-check::before { content: "\f60a"; }
|
|
49
|
+
|
|
50
|
+
&.cart::before { content: "\e8cc"; }
|
|
51
|
+
&.cart-plus::before { content: "\e854"; }
|
|
52
|
+
&.cart-minus::before { content: "\e928"; }
|
|
53
|
+
&.cart-checkout::before { content: "\eb88"; }
|
|
54
|
+
&.cart-off::before { content: "\f4f7"; }
|
|
55
|
+
|
|
56
|
+
&.arrow-up::before { content: "\e986"; }
|
|
57
|
+
&.arrow-down::before { content: "\e984"; }
|
|
58
|
+
|
|
59
|
+
&.arrow-left::before { content: "\ef7d"; }
|
|
60
|
+
&.arrow-right::before { content: "\e941"; }
|
|
27
61
|
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
.ngf-tab-nav {
|
|
2
|
+
display: block;
|
|
3
|
+
padding: 10px 30px;
|
|
4
|
+
background-color: var(--background-color) !important;
|
|
5
|
+
color: var(--color) !important;
|
|
6
|
+
text-decoration: none !important;
|
|
7
|
+
cursor: pointer;
|
|
8
|
+
|
|
9
|
+
--color: #333;
|
|
10
|
+
--background-color: #FFF;
|
|
11
|
+
|
|
12
|
+
&:hover {
|
|
13
|
+
--background-color: rgba(var(--ngf-primary-rgb), .1);
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
&.active {
|
|
17
|
+
position: relative;
|
|
18
|
+
|
|
19
|
+
--color: var(--ngf-primary);
|
|
20
|
+
|
|
21
|
+
&::before {
|
|
22
|
+
display: block;
|
|
23
|
+
position: absolute;
|
|
24
|
+
inset: auto 0px -1px 0px;
|
|
25
|
+
background-color: var(--ngf-primary);
|
|
26
|
+
height: 3px;
|
|
27
|
+
content: "";
|
|
28
|
+
z-index: 2;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
package/types/ngflux-ngflux.d.ts
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import * as _angular_core from '@angular/core';
|
|
2
|
-
import { InjectionToken, Signal, ViewContainerRef, Injector } from '@angular/core';
|
|
2
|
+
import { InjectionToken, Signal, ViewContainerRef, Injector, InputSignal, InputSignalWithTransform, ModelSignal, TemplateRef } from '@angular/core';
|
|
3
3
|
import * as _ngflux_ngflux from '@ngflux/ngflux';
|
|
4
4
|
import * as rxjs from 'rxjs';
|
|
5
5
|
import { Observable } from 'rxjs';
|
|
6
|
+
import { FormValueControl } from '@angular/forms/signals';
|
|
7
|
+
import * as i1 from '@angular/router';
|
|
6
8
|
import { Route, Data } from '@angular/router';
|
|
7
9
|
|
|
8
10
|
type ButtonDirection = 'normal' | 'reversed';
|
|
@@ -151,8 +153,53 @@ type NgFluxRoute = Route & {
|
|
|
151
153
|
children?: NgFluxRoutes;
|
|
152
154
|
};
|
|
153
155
|
|
|
156
|
+
type SelectItem<T = any, V = any> = {
|
|
157
|
+
label: string;
|
|
158
|
+
value: V;
|
|
159
|
+
children?: T[];
|
|
160
|
+
disabled?: boolean;
|
|
161
|
+
};
|
|
162
|
+
type SelectTransformer<T = any, V = any> = {
|
|
163
|
+
getLabel(item: T): string;
|
|
164
|
+
getValue(item: T): V;
|
|
165
|
+
getChildren?(item: T): T[];
|
|
166
|
+
setChildren?(item: T, children: T[]): void;
|
|
167
|
+
isDisabled?(item: T): boolean;
|
|
168
|
+
};
|
|
169
|
+
|
|
170
|
+
type Menu = {
|
|
171
|
+
text: string;
|
|
172
|
+
icon?: string;
|
|
173
|
+
href?: string;
|
|
174
|
+
isExternal?: boolean;
|
|
175
|
+
targetBlank?: boolean;
|
|
176
|
+
onClick?: (e: PointerEvent, item: Menu) => any;
|
|
177
|
+
children?: Menu[];
|
|
178
|
+
};
|
|
179
|
+
|
|
180
|
+
type FrameSize = 'auto' | 'viewport';
|
|
181
|
+
type FrameToolbarItem = {};
|
|
182
|
+
type FrameHeaderMenu = Omit<Menu, 'children'>;
|
|
183
|
+
type FrameOptions = {
|
|
184
|
+
title?: () => string;
|
|
185
|
+
icon?: () => string;
|
|
186
|
+
image?: () => string;
|
|
187
|
+
toolbarItems?: () => FrameToolbarItem[];
|
|
188
|
+
headerMenu?: () => FrameHeaderMenu[];
|
|
189
|
+
sideMenu?: () => Menu[];
|
|
190
|
+
};
|
|
191
|
+
|
|
154
192
|
declare const provideNgFlux: (config?: NgFluxConfig) => _angular_core.EnvironmentProviders;
|
|
155
193
|
|
|
194
|
+
type Justify = 'start' | 'center' | 'end' | 'stretch';
|
|
195
|
+
declare class NgFluxActions {
|
|
196
|
+
readonly justify: _angular_core.InputSignal<Justify>;
|
|
197
|
+
readonly wrap: _angular_core.InputSignal<boolean>;
|
|
198
|
+
readonly gap: _angular_core.InputSignal<number>;
|
|
199
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<NgFluxActions, never>;
|
|
200
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<NgFluxActions, "ngf-actions", never, { "justify": { "alias": "justify"; "required": false; "isSignal": true; }; "wrap": { "alias": "wrap"; "required": false; "isSignal": true; }; "gap": { "alias": "gap"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
201
|
+
}
|
|
202
|
+
|
|
156
203
|
declare class NgFluxButton {
|
|
157
204
|
private readonly ref;
|
|
158
205
|
readonly icon: _angular_core.InputSignal<string | undefined>;
|
|
@@ -271,5 +318,154 @@ declare class NgFluxPagination {
|
|
|
271
318
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<NgFluxPagination, "ngf-pagination", never, { "data": { "alias": "data"; "required": true; "isSignal": true; }; "preload": { "alias": "preload"; "required": false; "isSignal": true; }; "transform": { "alias": "transform"; "required": false; "isSignal": true; }; "limit": { "alias": "limit"; "required": false; "isSignal": true; }; "limitOptions": { "alias": "limitOptions"; "required": false; "isSignal": true; }; }, { "limit": "limitChange"; "callback": "callback"; }, never, ["*"], true, never>;
|
|
272
319
|
}
|
|
273
320
|
|
|
274
|
-
|
|
275
|
-
|
|
321
|
+
type SelectItemOptions = {
|
|
322
|
+
getSelected: (item: any) => boolean;
|
|
323
|
+
};
|
|
324
|
+
|
|
325
|
+
declare class NgFluxSelect<V = any> implements FormValueControl<V | V[] | null> {
|
|
326
|
+
private readonly ref;
|
|
327
|
+
readonly data: InputSignal<any[]>;
|
|
328
|
+
readonly block: InputSignalWithTransform<boolean, unknown>;
|
|
329
|
+
readonly multi: InputSignalWithTransform<boolean, unknown>;
|
|
330
|
+
readonly placeholder: InputSignal<string | undefined>;
|
|
331
|
+
readonly transform: InputSignal<SelectTransformer<any, V>>;
|
|
332
|
+
protected readonly mapper: _angular_core.Signal<Map<V, any>>;
|
|
333
|
+
readonly value: ModelSignal<V | V[] | null>;
|
|
334
|
+
protected readonly vmap: _angular_core.Signal<Map<V, any>>;
|
|
335
|
+
protected readonly open: _angular_core.WritableSignal<boolean>;
|
|
336
|
+
protected readonly searchbox: _angular_core.WritableSignal<string>;
|
|
337
|
+
protected readonly search: _angular_core.Signal<any[]>;
|
|
338
|
+
protected readonly headerText: _angular_core.Signal<string>;
|
|
339
|
+
private doFlatMap;
|
|
340
|
+
private doSearch;
|
|
341
|
+
protected toggleOpen(): void;
|
|
342
|
+
protected toggle(item: any): void;
|
|
343
|
+
protected readonly options: SelectItemOptions;
|
|
344
|
+
protected onDocumentClick(e: PointerEvent): void;
|
|
345
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<NgFluxSelect<any>, never>;
|
|
346
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<NgFluxSelect<any>, "ngf-select", never, { "data": { "alias": "data"; "required": true; "isSignal": true; }; "block": { "alias": "block"; "required": false; "isSignal": true; }; "multi": { "alias": "multi"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "transform": { "alias": "transform"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, never, true, never>;
|
|
347
|
+
}
|
|
348
|
+
|
|
349
|
+
declare class PinInputDirective {
|
|
350
|
+
private readonly ref;
|
|
351
|
+
readonly elem: HTMLInputElement;
|
|
352
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<PinInputDirective, never>;
|
|
353
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<PinInputDirective, "[pinInput]", never, {}, {}, never, never, true, never>;
|
|
354
|
+
}
|
|
355
|
+
|
|
356
|
+
declare class NgFluxPinInput implements FormValueControl<string> {
|
|
357
|
+
readonly chars: InputSignal<number>;
|
|
358
|
+
readonly block: InputSignalWithTransform<boolean, unknown>;
|
|
359
|
+
readonly value: _angular_core.ModelSignal<string>;
|
|
360
|
+
protected readonly values: _angular_core.Signal<string[]>;
|
|
361
|
+
protected readonly inputs: _angular_core.Signal<readonly PinInputDirective[]>;
|
|
362
|
+
protected onKeyDown(e: KeyboardEvent, index: number): void;
|
|
363
|
+
protected onPaste(e: ClipboardEvent, index: number): void;
|
|
364
|
+
private setFocus;
|
|
365
|
+
private readonly allowed;
|
|
366
|
+
focus(options?: FocusOptions): void;
|
|
367
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<NgFluxPinInput, never>;
|
|
368
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<NgFluxPinInput, "ngf-pin-input", never, { "chars": { "alias": "chars"; "required": false; "isSignal": true; }; "block": { "alias": "block"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, never, true, never>;
|
|
369
|
+
}
|
|
370
|
+
|
|
371
|
+
declare class TabNavController {
|
|
372
|
+
private readonly map;
|
|
373
|
+
readonly navs: _angular_core.Signal<NgFluxTabNavDirective[]>;
|
|
374
|
+
private readonly selected;
|
|
375
|
+
readonly selectedIndex: _angular_core.WritableSignal<number>;
|
|
376
|
+
readonly active: _angular_core.Signal<NgFluxTabNavDirective | null>;
|
|
377
|
+
readonly activeContent: _angular_core.Signal<NgFluxTabContentDirective | undefined>;
|
|
378
|
+
activate(nav: NgFluxTabNavDirective): void;
|
|
379
|
+
add(nav: NgFluxTabNavDirective): void;
|
|
380
|
+
remove(nav: NgFluxTabNavDirective): void;
|
|
381
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<TabNavController, never>;
|
|
382
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<TabNavController>;
|
|
383
|
+
}
|
|
384
|
+
|
|
385
|
+
declare class TabGroupController {
|
|
386
|
+
private readonly map;
|
|
387
|
+
readonly tabs: _angular_core.Signal<NgFluxTab[]>;
|
|
388
|
+
add(nav: NgFluxTab): void;
|
|
389
|
+
remove(nav: NgFluxTab): void;
|
|
390
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<TabGroupController, never>;
|
|
391
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<TabGroupController>;
|
|
392
|
+
}
|
|
393
|
+
|
|
394
|
+
declare class NgFluxTabContentDirective {
|
|
395
|
+
readonly templateRef: TemplateRef<any>;
|
|
396
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<NgFluxTabContentDirective, never>;
|
|
397
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<NgFluxTabContentDirective, "[ngfTabContent]", ["content"], {}, {}, never, never, true, never>;
|
|
398
|
+
}
|
|
399
|
+
|
|
400
|
+
declare class NgFluxTabNavDirective {
|
|
401
|
+
private readonly routerLink;
|
|
402
|
+
private readonly routerLinkActive;
|
|
403
|
+
protected readonly ctrl: TabNavController;
|
|
404
|
+
readonly content: _angular_core.InputSignal<NgFluxTabContentDirective | undefined>;
|
|
405
|
+
readonly navContent: _angular_core.Signal<NgFluxTabContentDirective | undefined>;
|
|
406
|
+
private readonly routeActive;
|
|
407
|
+
protected readonly active: _angular_core.Signal<boolean>;
|
|
408
|
+
constructor();
|
|
409
|
+
protected activate(e?: PointerEvent): void;
|
|
410
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<NgFluxTabNavDirective, never>;
|
|
411
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<NgFluxTabNavDirective, "[ngfTabNav]", never, { "content": { "alias": "content"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof i1.RouterLink; inputs: { "routerLink": "link"; }; outputs: {}; }, { directive: typeof i1.RouterLinkActive; inputs: {}; outputs: {}; }]>;
|
|
412
|
+
}
|
|
413
|
+
|
|
414
|
+
declare class NgFluxTab {
|
|
415
|
+
private readonly ctrl;
|
|
416
|
+
readonly label: _angular_core.InputSignal<string>;
|
|
417
|
+
readonly navLabel: _angular_core.Signal<string>;
|
|
418
|
+
readonly content: _angular_core.Signal<NgFluxTabContentDirective>;
|
|
419
|
+
constructor();
|
|
420
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<NgFluxTab, never>;
|
|
421
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<NgFluxTab, "ngf-tab", never, { "label": { "alias": "label"; "required": true; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
422
|
+
}
|
|
423
|
+
|
|
424
|
+
declare class NgFluxTabGroup {
|
|
425
|
+
protected readonly ctrl: TabGroupController;
|
|
426
|
+
readonly selectedIndex: _angular_core.InputSignal<number>;
|
|
427
|
+
protected readonly showTabs: boolean;
|
|
428
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<NgFluxTabGroup, never>;
|
|
429
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<NgFluxTabGroup, "ngf-tab-group", never, { "selectedIndex": { "alias": "selectedIndex"; "required": false; "isSignal": true; }; }, {}, never, ["ngf-tab"], true, never>;
|
|
430
|
+
}
|
|
431
|
+
|
|
432
|
+
declare class NgFluxTabPanel {
|
|
433
|
+
readonly label: _angular_core.InputSignal<string | undefined>;
|
|
434
|
+
protected readonly content: _angular_core.WritableSignal<TemplateRef<any> | null>;
|
|
435
|
+
setContent(tpl?: TemplateRef<any>): void;
|
|
436
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<NgFluxTabPanel, never>;
|
|
437
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<NgFluxTabPanel, "ngf-tab-panel", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
438
|
+
}
|
|
439
|
+
|
|
440
|
+
declare class NgFluxTabNavbar {
|
|
441
|
+
private readonly ctrl;
|
|
442
|
+
readonly panel: _angular_core.InputSignal<NgFluxTabPanel | undefined>;
|
|
443
|
+
readonly selectedIndex: _angular_core.InputSignal<number>;
|
|
444
|
+
constructor();
|
|
445
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<NgFluxTabNavbar, never>;
|
|
446
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<NgFluxTabNavbar, "ngf-tab-navbar", never, { "panel": { "alias": "panel"; "required": false; "isSignal": true; }; "selectedIndex": { "alias": "selectedIndex"; "required": false; "isSignal": true; }; }, {}, never, ["[ngfTabNav]"], true, never>;
|
|
447
|
+
}
|
|
448
|
+
|
|
449
|
+
declare class NgFluxFrame {
|
|
450
|
+
private readonly leftRef;
|
|
451
|
+
readonly viewport: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
452
|
+
readonly options: _angular_core.InputSignal<FrameOptions>;
|
|
453
|
+
protected readonly title: _angular_core.Signal<string>;
|
|
454
|
+
protected readonly icon: _angular_core.Signal<string>;
|
|
455
|
+
protected readonly image: _angular_core.Signal<string>;
|
|
456
|
+
protected readonly toolbarItems: _angular_core.Signal<_ngflux_ngflux.FrameToolbarItem[]>;
|
|
457
|
+
protected readonly headerMenu: _angular_core.Signal<_ngflux_ngflux.FrameHeaderMenu[]>;
|
|
458
|
+
protected readonly drawer: _angular_core.WritableSignal<boolean>;
|
|
459
|
+
protected readonly search: _angular_core.WritableSignal<string>;
|
|
460
|
+
protected readonly searchText: _angular_core.Resource<string>;
|
|
461
|
+
protected readonly sideMenu: _angular_core.Signal<Menu[]>;
|
|
462
|
+
private searchMenu;
|
|
463
|
+
protected toggleDrawer(e?: PointerEvent): void;
|
|
464
|
+
protected closeDrawer(e?: PointerEvent): void;
|
|
465
|
+
protected onDocumentClick(e: PointerEvent): void;
|
|
466
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<NgFluxFrame, never>;
|
|
467
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<NgFluxFrame, "ngf-frame", never, { "viewport": { "alias": "viewport"; "required": false; "isSignal": true; }; "options": { "alias": "options"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
468
|
+
}
|
|
469
|
+
|
|
470
|
+
export { NGF_CONFIG, NGF_DIALOG_DATA, NgFluxActions, NgFluxButton, NgFluxDialog, NgFluxDialogBodyComponent, NgFluxDialogFooterComponent, NgFluxDialogHeaderComponent, NgFluxDialogInstance, NgFluxDialogRef, NgFluxDialogRootComponent, NgFluxFrame, NgFluxLoading, NgFluxLoadingRootComponent, NgFluxPagination, NgFluxPinInput, NgFluxSelect, NgFluxTab, NgFluxTabContentDirective, NgFluxTabGroup, NgFluxTabNavDirective, NgFluxTabNavbar, NgFluxTabPanel, provideNgFlux };
|
|
471
|
+
export type { ButtonDirection, ButtonOptions, ButtonSize, ButtonTheme, ButtonType, FrameHeaderMenu, FrameOptions, FrameSize, FrameToolbarItem, Menu, NgFluxComponent, NgFluxConfig, NgFluxDialogAlertOptions, NgFluxDialogButton, NgFluxDialogButtonObj, NgFluxDialogCommand, NgFluxDialogConfig, NgFluxDialogConfirmOptions, NgFluxDialogEvents, NgFluxDialogPromptOptions, NgFluxDialogRoot, NgFluxLoadingEntry, NgFluxRoute, NgFluxRoutes, Pagination, PaginationInfo, PaginationTransformer, SelectItem, SelectTransformer };
|