@acorex/platform 20.4.1 → 20.5.0-next.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/common/index.d.ts +1 -1
- package/core/index.d.ts +405 -193
- package/fesm2022/acorex-platform-common.mjs +2 -2
- package/fesm2022/acorex-platform-common.mjs.map +1 -1
- package/fesm2022/acorex-platform-core.mjs +638 -244
- package/fesm2022/acorex-platform-core.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-components.mjs +614 -31
- package/fesm2022/acorex-platform-layout-components.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-entity.mjs +30 -396
- package/fesm2022/acorex-platform-layout-entity.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-widget-core.mjs +164 -158
- package/fesm2022/acorex-platform-layout-widget-core.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-widgets.mjs +1182 -305
- package/fesm2022/acorex-platform-layout-widgets.mjs.map +1 -1
- package/fesm2022/acorex-platform-themes-default.mjs +6 -1
- package/fesm2022/acorex-platform-themes-default.mjs.map +1 -1
- package/fesm2022/acorex-platform-themes-shared.mjs +676 -271
- package/fesm2022/acorex-platform-themes-shared.mjs.map +1 -1
- package/layout/components/index.d.ts +245 -3
- package/layout/entity/index.d.ts +1 -59
- package/layout/widgets/index.d.ts +237 -3
- package/package.json +1 -1
- package/themes/default/index.d.ts +1 -0
|
@@ -15,24 +15,24 @@ import { HttpClient } from '@angular/common/http';
|
|
|
15
15
|
import { signalStore, withState, withComputed, withMethods, patchState, withHooks } from '@ngrx/signals';
|
|
16
16
|
import { timer, firstValueFrom, fromEvent, Subscription, filter } from 'rxjs';
|
|
17
17
|
import { debounceTime } from 'rxjs/operators';
|
|
18
|
-
import * as
|
|
18
|
+
import * as i5 from '@acorex/core/translation';
|
|
19
19
|
import { AXTranslationModule } from '@acorex/core/translation';
|
|
20
20
|
import * as i3$1 from '@acorex/platform/layout/widget-core';
|
|
21
21
|
import { AXPValueWidgetComponent, AXP_WIDGETS_LAYOUT_CATEGORY, AXPWidgetCoreModule } from '@acorex/platform/layout/widget-core';
|
|
22
|
-
import * as i2$
|
|
22
|
+
import * as i2$3 from '@acorex/platform/layout/components';
|
|
23
23
|
import { AXPComponentSlotModule } from '@acorex/platform/layout/components';
|
|
24
|
-
import * as i2$
|
|
24
|
+
import * as i2$1 from '@acorex/components/form';
|
|
25
25
|
import { AXFormModule } from '@acorex/components/form';
|
|
26
26
|
import * as i4$1 from '@acorex/components/search-box';
|
|
27
27
|
import { AXSearchBoxModule } from '@acorex/components/search-box';
|
|
28
28
|
import * as i1$1 from '@acorex/components/select-box';
|
|
29
29
|
import { AXSelectBoxModule } from '@acorex/components/select-box';
|
|
30
|
-
import * as i5 from '@angular/forms';
|
|
30
|
+
import * as i5$1 from '@angular/forms';
|
|
31
31
|
import { FormsModule } from '@angular/forms';
|
|
32
32
|
import { AXP_NAME_PROPERTY, AXP_DATA_PATH_PROPERTY, AXP_DISABLED_PROPERTY } from '@acorex/platform/layout/widgets';
|
|
33
33
|
import { AXSelectionCdkModule } from '@acorex/cdk/selection';
|
|
34
34
|
import { AXPopupService } from '@acorex/components/popup';
|
|
35
|
-
import * as i2$
|
|
35
|
+
import * as i2$2 from '@acorex/components/button-group';
|
|
36
36
|
import { AXButtonGroupModule } from '@acorex/components/button-group';
|
|
37
37
|
import { AXBasePageComponent } from '@acorex/components/page';
|
|
38
38
|
|
|
@@ -480,7 +480,7 @@ class AXPThemeSlotComponent {
|
|
|
480
480
|
</ax-button-item-list>
|
|
481
481
|
</ax-dropdown-panel>
|
|
482
482
|
</ax-button>
|
|
483
|
-
`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i2.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "component", type: i2.AXButtonItemComponent, selector: "ax-button-item", inputs: ["color", "disabled", "text", "selected", "divided", "data", "name"], outputs: ["onClick", "onFocus", "onBlur", "disabledChange"] }, { kind: "component", type: i2.AXButtonItemListComponent, selector: "ax-button-item-list", inputs: ["items"], outputs: ["onItemClick"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i3.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i3.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay" }, { kind: "ngmodule", type: AXDropdownModule }, { kind: "component", type: i4.AXDropdownPanelComponent, selector: "ax-dropdown-panel", inputs: ["isOpen", "fitParent", "dropdownWidth", "position", "placement", "_target", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "directive", type:
|
|
483
|
+
`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i2.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "component", type: i2.AXButtonItemComponent, selector: "ax-button-item", inputs: ["color", "disabled", "text", "selected", "divided", "data", "name"], outputs: ["onClick", "onFocus", "onBlur", "disabledChange"] }, { kind: "component", type: i2.AXButtonItemListComponent, selector: "ax-button-item-list", inputs: ["items"], outputs: ["onItemClick"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i3.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i3.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay" }, { kind: "ngmodule", type: AXDropdownModule }, { kind: "component", type: i4.AXDropdownPanelComponent, selector: "ax-dropdown-panel", inputs: ["isOpen", "fitParent", "dropdownWidth", "position", "placement", "_target", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "directive", type: i5.AXTranslatorDirective, selector: "[translate]" }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.AXTranslatorPipe, name: "translate" }] }); }
|
|
484
484
|
}
|
|
485
485
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: AXPThemeSlotComponent, decorators: [{
|
|
486
486
|
type: Component,
|
|
@@ -724,7 +724,7 @@ class AXPColorChooserWidgetEditComponent extends AXPValueWidgetComponent {
|
|
|
724
724
|
</ax-select-box>
|
|
725
725
|
</ax-form-field>
|
|
726
726
|
</ax-form>
|
|
727
|
-
`, isInline: true, dependencies: [{ kind: "ngmodule", type: AXSelectBoxModule }, { kind: "component", type: i1$1.AXSelectBoxComponent, selector: "ax-select-box", inputs: ["disabled", "readonly", "tabIndex", "placeholder", "minValue", "maxValue", "value", "state", "name", "id", "type", "look", "multiple", "valueField", "textField", "disabledField", "textTemplate", "selectedItems", "isItemTruncated", "showItemTooltip", "dataSource", "minRecordsForSearch", "caption", "itemTemplate", "selectedTemplate", "emptyTemplate", "loadingTemplate", "dropdownWidth", "searchBoxAutoFocus"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "readonlyChange", "disabledChange", "onOpened", "onClosed", "onItemSelected", "onItemClick"] }, { kind: "ngmodule", type: AXFormModule }, { kind: "component", type: i2$
|
|
727
|
+
`, isInline: true, dependencies: [{ kind: "ngmodule", type: AXSelectBoxModule }, { kind: "component", type: i1$1.AXSelectBoxComponent, selector: "ax-select-box", inputs: ["disabled", "readonly", "tabIndex", "placeholder", "minValue", "maxValue", "value", "state", "name", "id", "type", "look", "multiple", "valueField", "textField", "disabledField", "textTemplate", "selectedItems", "isItemTruncated", "showItemTooltip", "itemHeight", "maxVisibleItems", "dataSource", "minRecordsForSearch", "caption", "itemTemplate", "selectedTemplate", "emptyTemplate", "loadingTemplate", "dropdownWidth", "searchBoxAutoFocus"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "readonlyChange", "disabledChange", "onOpened", "onClosed", "onItemSelected", "onItemClick"] }, { kind: "ngmodule", type: AXFormModule }, { kind: "component", type: i2$1.AXFormFieldComponent, selector: "ax-form-field", inputs: ["labelMode"] }, { kind: "component", type: i2$1.AXFormComponent, selector: "ax-form", inputs: ["labelMode", "look", "messageStyle", "updateOn"], outputs: ["onValidate", "updateOnChange"] }, { kind: "directive", type: i2$1.AXValidationRuleDirective, selector: "ax-validation-rule", inputs: ["rule", "options", "message", "disabled"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: AXSearchBoxModule }, { kind: "component", type: i4$1.AXSearchBoxComponent, selector: "ax-search-box", inputs: ["disabled", "readonly", "tabIndex", "placeholder", "value", "state", "name", "id", "look", "class", "delayTime", "type"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "readonlyChange", "disabledChange", "onKeyDown", "onKeyUp", "onKeyPress"] }, { kind: "ngmodule", type: AXButtonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i5$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
728
728
|
}
|
|
729
729
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: AXPColorChooserWidgetEditComponent, decorators: [{
|
|
730
730
|
type: Component,
|
|
@@ -814,7 +814,7 @@ class AXPFontSizeChooserWidgetComponent extends AXPValueWidgetComponent {
|
|
|
814
814
|
</div>
|
|
815
815
|
</div>
|
|
816
816
|
}
|
|
817
|
-
`, isInline: true, styles: [":host{display:flex;flex-direction:row;flex-wrap:wrap;gap:.5rem}:host>div{display:flex;cursor:pointer;flex-direction:row;align-items:center;justify-content:space-between;gap:.5rem;border-radius:.5rem;padding:.5rem 1rem;background-color:rgb(var(--ax-sys-color-light-surface));color:rgb(var(--ax-sys-color-on-light-surface));border-color:rgb(var(--ax-sys-color-border-light-surface))}:host>div:is(.ax-dark *){background-color:rgb(var(--ax-sys-color-surface));color:rgb(var(--ax-sys-color-on-surface));border-color:rgb(var(--ax-sys-color-border-surface))}:host>div{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.2s;animation-duration:.2s}:host>div:hover{background-color:rgb(var(--ax-sys-color-dark-surface));color:rgb(var(--ax-sys-color-on-dark-surface));border-color:rgb(var(--ax-sys-color-border-dark-surface))}:host>div.--selected{background-color:rgb(var(--ax-sys-color-primary-lighter-surface));color:rgb(var(--ax-sys-color-on-primary-lighter-surface));border-color:rgb(var(--ax-sys-color-border-primary-lighter-surface))}:host>div>div{display:flex;align-items:center;justify-content:center}:host>div>div i{font-size:1.25rem;line-height:1.75rem}:host>div>span{font-size:.875rem;line-height:1.25rem;font-weight:600;line-height:1.625}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: AXSelectionCdkModule }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type:
|
|
817
|
+
`, isInline: true, styles: [":host{display:flex;flex-direction:row;flex-wrap:wrap;gap:.5rem}:host>div{display:flex;cursor:pointer;flex-direction:row;align-items:center;justify-content:space-between;gap:.5rem;border-radius:.5rem;padding:.5rem 1rem;background-color:rgb(var(--ax-sys-color-light-surface));color:rgb(var(--ax-sys-color-on-light-surface));border-color:rgb(var(--ax-sys-color-border-light-surface))}:host>div:is(.ax-dark *){background-color:rgb(var(--ax-sys-color-surface));color:rgb(var(--ax-sys-color-on-surface));border-color:rgb(var(--ax-sys-color-border-surface))}:host>div{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.2s;animation-duration:.2s}:host>div:hover{background-color:rgb(var(--ax-sys-color-dark-surface));color:rgb(var(--ax-sys-color-on-dark-surface));border-color:rgb(var(--ax-sys-color-border-dark-surface))}:host>div.--selected{background-color:rgb(var(--ax-sys-color-primary-lighter-surface));color:rgb(var(--ax-sys-color-on-primary-lighter-surface));border-color:rgb(var(--ax-sys-color-border-primary-lighter-surface))}:host>div>div{display:flex;align-items:center;justify-content:center}:host>div>div i{font-size:1.25rem;line-height:1.75rem}:host>div>span{font-size:.875rem;line-height:1.25rem;font-weight:600;line-height:1.625}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: AXSelectionCdkModule }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
818
818
|
}
|
|
819
819
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: AXPFontSizeChooserWidgetComponent, decorators: [{
|
|
820
820
|
type: Component,
|
|
@@ -936,232 +936,80 @@ const AXPFontStyleChooserWidget = {
|
|
|
936
936
|
}
|
|
937
937
|
};
|
|
938
938
|
|
|
939
|
+
//#region ---- Injection Tokens ----
|
|
940
|
+
/**
|
|
941
|
+
* Injection token for icon providers.
|
|
942
|
+
* Use multi: true to register multiple providers.
|
|
943
|
+
*/
|
|
944
|
+
const AXP_ICON_PROVIDER = new InjectionToken('AXP_ICON_PROVIDER');
|
|
945
|
+
/**
|
|
946
|
+
* Injection token for icon style providers.
|
|
947
|
+
* Use multi: true to register multiple providers.
|
|
948
|
+
*/
|
|
949
|
+
const AXP_ICON_STYLE_PROVIDER = new InjectionToken('AXP_ICON_STYLE_PROVIDER');
|
|
950
|
+
//#endregion
|
|
951
|
+
|
|
952
|
+
//#endregion
|
|
953
|
+
//#region ---- Abstract Providers ----
|
|
939
954
|
class AXPIconProvider {
|
|
940
955
|
}
|
|
941
956
|
class AXPIconStyleProvider {
|
|
942
957
|
}
|
|
943
|
-
|
|
944
|
-
|
|
945
|
-
{ name: 'fa-regular', label: 'Regular' },
|
|
946
|
-
];
|
|
947
|
-
const DEFAULT_ICONS = [
|
|
948
|
-
// Navigation & Actions
|
|
949
|
-
{ name: 'house', label: 'House', tags: ['home', 'building'], supportedStyle: ['fa-regular'] },
|
|
950
|
-
{ name: 'magnifying-glass', label: 'Search', tags: ['find', 'zoom'], supportedStyle: ['fa-solid'] },
|
|
951
|
-
{ name: 'user', label: 'User', tags: ['person', 'account'] },
|
|
952
|
-
{ name: 'check', label: 'Check', tags: ['confirm', 'done'] },
|
|
953
|
-
{ name: 'xmark', label: 'Close', tags: ['cancel', 'exit'] },
|
|
954
|
-
{ name: 'plus', label: 'Add', tags: ['create', 'new', 'plus'] },
|
|
955
|
-
{ name: 'minus', label: 'Remove', tags: ['delete', 'subtract', 'minus'] },
|
|
956
|
-
{ name: 'edit', label: 'Edit', tags: ['modify', 'change', 'pencil'] },
|
|
957
|
-
{ name: 'trash', label: 'Delete', tags: ['remove', 'delete', 'bin'] },
|
|
958
|
-
{ name: 'copy', label: 'Copy', tags: ['duplicate', 'clone'] },
|
|
959
|
-
{ name: 'download', label: 'Download', tags: ['save', 'export'] },
|
|
960
|
-
{ name: 'upload', label: 'Upload', tags: ['import', 'send'] },
|
|
961
|
-
{ name: 'print', label: 'Print', tags: ['printer', 'document'] },
|
|
962
|
-
{ name: 'share', label: 'Share', tags: ['send', 'distribute'] },
|
|
963
|
-
{ name: 'link', label: 'Link', tags: ['url', 'connection'] },
|
|
964
|
-
{ name: 'external-link', label: 'External Link', tags: ['open', 'external'] },
|
|
965
|
-
// Media & Files
|
|
966
|
-
{ name: 'star', label: 'Star', tags: ['favorite', 'rate'] },
|
|
967
|
-
{ name: 'heart', label: 'Heart', tags: ['love', 'like'] },
|
|
968
|
-
{ name: 'cloud', label: 'Cloud', tags: ['weather', 'sky'] },
|
|
969
|
-
{ name: 'envelope', label: 'Envelope', tags: ['mail', 'message'] },
|
|
970
|
-
{ name: 'folder', label: 'Folder', tags: ['directory', 'files'] },
|
|
971
|
-
{ name: 'gear', label: 'Gear', tags: ['settings', 'options'] },
|
|
972
|
-
{ name: 'camera', label: 'Camera', tags: ['photo', 'image'] },
|
|
973
|
-
{ name: 'video', label: 'Video', tags: ['film', 'movie'] },
|
|
974
|
-
{ name: 'music', label: 'Music', tags: ['sound', 'audio'] },
|
|
975
|
-
{ name: 'file-lines', label: 'File', tags: ['document', 'text'] },
|
|
976
|
-
{ name: 'file-pdf', label: 'PDF', tags: ['document', 'pdf'] },
|
|
977
|
-
{ name: 'file-image', label: 'Image', tags: ['picture', 'photo'] },
|
|
978
|
-
{ name: 'file-video', label: 'Video File', tags: ['movie', 'clip'] },
|
|
979
|
-
{ name: 'file-audio', label: 'Audio File', tags: ['sound', 'music'] },
|
|
980
|
-
{ name: 'file-zipper', label: 'Archive', tags: ['zip', 'compressed'] },
|
|
981
|
-
{ name: 'image', label: 'Image', tags: ['picture', 'photo'] },
|
|
982
|
-
{ name: 'images', label: 'Images', tags: ['gallery', 'photos'] },
|
|
983
|
-
// Communication & Social
|
|
984
|
-
{ name: 'phone', label: 'Phone', tags: ['call', 'telephone'] },
|
|
985
|
-
{ name: 'mobile', label: 'Mobile', tags: ['cell', 'smartphone'] },
|
|
986
|
-
{ name: 'comment', label: 'Comment', tags: ['message', 'chat'] },
|
|
987
|
-
{ name: 'comments', label: 'Comments', tags: ['messages', 'discussion'] },
|
|
988
|
-
{ name: 'thumbs-up', label: 'Like', tags: ['approve', 'good'] },
|
|
989
|
-
{ name: 'thumbs-down', label: 'Dislike', tags: ['disapprove', 'bad'] },
|
|
990
|
-
{ name: 'bell', label: 'Notification', tags: ['alert', 'reminder'] },
|
|
991
|
-
{ name: 'flag', label: 'Flag', tags: ['mark', 'report'] },
|
|
992
|
-
{ name: 'bookmark', label: 'Bookmark', tags: ['save', 'favorite'] },
|
|
993
|
-
{ name: 'calendar', label: 'Calendar', tags: ['date', 'schedule'] },
|
|
994
|
-
{ name: 'clock', label: 'Clock', tags: ['time', 'schedule'] },
|
|
995
|
-
// Business & Finance
|
|
996
|
-
{ name: 'chart-line', label: 'Chart', tags: ['graph', 'analytics'] },
|
|
997
|
-
{ name: 'chart-bar', label: 'Bar Chart', tags: ['graph', 'statistics'] },
|
|
998
|
-
{ name: 'chart-pie', label: 'Pie Chart', tags: ['graph', 'percentage'] },
|
|
999
|
-
{ name: 'calculator', label: 'Calculator', tags: ['math', 'compute'] },
|
|
1000
|
-
{ name: 'dollar-sign', label: 'Dollar', tags: ['money', 'currency'] },
|
|
1001
|
-
{ name: 'credit-card', label: 'Credit Card', tags: ['payment', 'card'] },
|
|
1002
|
-
{ name: 'receipt', label: 'Receipt', tags: ['bill', 'invoice'] },
|
|
1003
|
-
{ name: 'briefcase', label: 'Briefcase', tags: ['business', 'work'] },
|
|
1004
|
-
{ name: 'building', label: 'Building', tags: ['office', 'company'] },
|
|
1005
|
-
{ name: 'handshake', label: 'Handshake', tags: ['agreement', 'partnership'] },
|
|
1006
|
-
// Technology & Tools
|
|
1007
|
-
{ name: 'laptop', label: 'Laptop', tags: ['computer', 'notebook'] },
|
|
1008
|
-
{ name: 'desktop', label: 'Desktop', tags: ['computer', 'monitor'] },
|
|
1009
|
-
{ name: 'tablet', label: 'Tablet', tags: ['ipad', 'device'] },
|
|
1010
|
-
{ name: 'keyboard', label: 'Keyboard', tags: ['input', 'typing'] },
|
|
1011
|
-
{ name: 'mouse', label: 'Mouse', tags: ['pointer', 'click'] },
|
|
1012
|
-
{ name: 'wifi', label: 'WiFi', tags: ['internet', 'connection'] },
|
|
1013
|
-
{ name: 'database', label: 'Database', tags: ['data', 'storage'] },
|
|
1014
|
-
{ name: 'server', label: 'Server', tags: ['hosting', 'backend'] },
|
|
1015
|
-
{ name: 'code', label: 'Code', tags: ['programming', 'development'] },
|
|
1016
|
-
{ name: 'bug', label: 'Bug', tags: ['error', 'debug'] },
|
|
1017
|
-
{ name: 'shield', label: 'Shield', tags: ['security', 'protection'] },
|
|
1018
|
-
{ name: 'lock', label: 'Lock', tags: ['security', 'private'] },
|
|
1019
|
-
{ name: 'unlock', label: 'Unlock', tags: ['open', 'access'] },
|
|
1020
|
-
{ name: 'key', label: 'Key', tags: ['access', 'password'] },
|
|
1021
|
-
// Transportation & Location
|
|
1022
|
-
{ name: 'car', label: 'Car', tags: ['vehicle', 'automobile'] },
|
|
1023
|
-
{ name: 'truck', label: 'Truck', tags: ['vehicle', 'delivery'] },
|
|
1024
|
-
{ name: 'plane', label: 'Plane', tags: ['aircraft', 'travel'] },
|
|
1025
|
-
{ name: 'train', label: 'Train', tags: ['railway', 'transport'] },
|
|
1026
|
-
{ name: 'ship', label: 'Ship', tags: ['boat', 'vessel'] },
|
|
1027
|
-
{ name: 'bicycle', label: 'Bicycle', tags: ['bike', 'cycle'] },
|
|
1028
|
-
{ name: 'map', label: 'Map', tags: ['location', 'navigation'] },
|
|
1029
|
-
{ name: 'map-pin', label: 'Location', tags: ['pin', 'marker'] },
|
|
1030
|
-
{ name: 'globe', label: 'Globe', tags: ['world', 'earth'] },
|
|
1031
|
-
{ name: 'compass', label: 'Compass', tags: ['direction', 'navigation'] },
|
|
1032
|
-
// Health & Medical
|
|
1033
|
-
{ name: 'heart-pulse', label: 'Heart Rate', tags: ['health', 'medical'] },
|
|
1034
|
-
{ name: 'stethoscope', label: 'Stethoscope', tags: ['medical', 'doctor'] },
|
|
1035
|
-
{ name: 'pills', label: 'Pills', tags: ['medicine', 'drugs'] },
|
|
1036
|
-
{ name: 'syringe', label: 'Syringe', tags: ['injection', 'medical'] },
|
|
1037
|
-
{ name: 'bandage', label: 'Bandage', tags: ['first aid', 'wound'] },
|
|
1038
|
-
{ name: 'hospital', label: 'Hospital', tags: ['medical', 'healthcare'] },
|
|
1039
|
-
// Education & Learning
|
|
1040
|
-
{ name: 'graduation-cap', label: 'Graduation', tags: ['education', 'degree'] },
|
|
1041
|
-
{ name: 'book', label: 'Book', tags: ['reading', 'education'] },
|
|
1042
|
-
{ name: 'book-open', label: 'Open Book', tags: ['reading', 'study'] },
|
|
1043
|
-
{ name: 'pen', label: 'Pen', tags: ['write', 'draw'] },
|
|
1044
|
-
{ name: 'pencil', label: 'Pencil', tags: ['write', 'draw'] },
|
|
1045
|
-
{ name: 'highlighter', label: 'Highlighter', tags: ['mark', 'emphasize'] },
|
|
1046
|
-
{ name: 'ruler', label: 'Ruler', tags: ['measure', 'straight'] },
|
|
1047
|
-
{ name: 'microscope', label: 'Microscope', tags: ['science', 'research'] },
|
|
1048
|
-
// Food & Dining
|
|
1049
|
-
{ name: 'utensils', label: 'Utensils', tags: ['food', 'dining'] },
|
|
1050
|
-
{ name: 'pizza-slice', label: 'Pizza', tags: ['food', 'slice'] },
|
|
1051
|
-
{ name: 'coffee', label: 'Coffee', tags: ['drink', 'beverage'] },
|
|
1052
|
-
{ name: 'wine-glass', label: 'Wine', tags: ['drink', 'alcohol'] },
|
|
1053
|
-
{ name: 'cake', label: 'Cake', tags: ['dessert', 'sweet'] },
|
|
1054
|
-
{ name: 'apple', label: 'Apple', tags: ['fruit', 'healthy'] },
|
|
1055
|
-
// Sports & Recreation
|
|
1056
|
-
{ name: 'football', label: 'Football', tags: ['sport', 'soccer'] },
|
|
1057
|
-
{ name: 'basketball', label: 'Basketball', tags: ['sport', 'ball'] },
|
|
1058
|
-
{ name: 'baseball', label: 'Baseball', tags: ['sport', 'ball'] },
|
|
1059
|
-
{ name: 'tennis-ball', label: 'Tennis', tags: ['sport', 'racket'] },
|
|
1060
|
-
{ name: 'swimming-pool', label: 'Swimming', tags: ['sport', 'water'] },
|
|
1061
|
-
{ name: 'dumbbell', label: 'Dumbbell', tags: ['fitness', 'weight'] },
|
|
1062
|
-
// Weather & Nature
|
|
1063
|
-
{ name: 'sun', label: 'Sun', tags: ['weather', 'bright'] },
|
|
1064
|
-
{ name: 'moon', label: 'Moon', tags: ['night', 'dark'] },
|
|
1065
|
-
{ name: 'cloud-sun', label: 'Partly Cloudy', tags: ['weather', 'mixed'] },
|
|
1066
|
-
{ name: 'cloud-rain', label: 'Rain', tags: ['weather', 'precipitation'] },
|
|
1067
|
-
{ name: 'snowflake', label: 'Snow', tags: ['weather', 'cold'] },
|
|
1068
|
-
{ name: 'bolt', label: 'Lightning', tags: ['weather', 'storm'] },
|
|
1069
|
-
{ name: 'tree', label: 'Tree', tags: ['nature', 'plant'] },
|
|
1070
|
-
{ name: 'leaf', label: 'Leaf', tags: ['nature', 'plant'] },
|
|
1071
|
-
{ name: 'flower', label: 'Flower', tags: ['nature', 'plant'] },
|
|
1072
|
-
// Shopping & Commerce
|
|
1073
|
-
{ name: 'shopping-cart', label: 'Shopping Cart', tags: ['buy', 'purchase'] },
|
|
1074
|
-
{ name: 'bag-shopping', label: 'Shopping Bag', tags: ['buy', 'store'] },
|
|
1075
|
-
{ name: 'tags', label: 'Tags', tags: ['price', 'label'] },
|
|
1076
|
-
{ name: 'percent', label: 'Percent', tags: ['discount', 'sale'] },
|
|
1077
|
-
{ name: 'gift', label: 'Gift', tags: ['present', 'surprise'] },
|
|
1078
|
-
{ name: 'box', label: 'Box', tags: ['package', 'container'] },
|
|
1079
|
-
// Security & Safety
|
|
1080
|
-
{ name: 'eye', label: 'Eye', tags: ['view', 'watch'] },
|
|
1081
|
-
{ name: 'eye-slash', label: 'Hide', tags: ['hidden', 'invisible'] },
|
|
1082
|
-
{ name: 'user-secret', label: 'Secret User', tags: ['anonymous', 'hidden'] },
|
|
1083
|
-
{ name: 'fingerprint', label: 'Fingerprint', tags: ['biometric', 'identity'] },
|
|
1084
|
-
{ name: 'fire', label: 'Fire', tags: ['hot', 'burn'] },
|
|
1085
|
-
{ name: 'warning', label: 'Warning', tags: ['alert', 'caution'] },
|
|
1086
|
-
{ name: 'exclamation-triangle', label: 'Exclamation', tags: ['warning', 'alert'] },
|
|
1087
|
-
// Miscellaneous
|
|
1088
|
-
{ name: 'question', label: 'Question', tags: ['help', 'ask'] },
|
|
1089
|
-
{ name: 'info', label: 'Info', tags: ['information', 'details'] },
|
|
1090
|
-
{ name: 'lightbulb', label: 'Lightbulb', tags: ['idea', 'bright'] },
|
|
1091
|
-
{ name: 'magic-wand', label: 'Magic Wand', tags: ['magic', 'wish'] },
|
|
1092
|
-
{ name: 'puzzle-piece', label: 'Puzzle', tags: ['piece', 'solve'] },
|
|
1093
|
-
{ name: 'gamepad', label: 'Gamepad', tags: ['gaming', 'controller'] },
|
|
1094
|
-
{ name: 'dice', label: 'Dice', tags: ['game', 'random'] },
|
|
1095
|
-
{ name: 'palette', label: 'Palette', tags: ['color', 'art'] },
|
|
1096
|
-
{ name: 'brush', label: 'Brush', tags: ['paint', 'art'] },
|
|
1097
|
-
{ name: 'scissors', label: 'Scissors', tags: ['cut', 'trim'] },
|
|
1098
|
-
];
|
|
1099
|
-
class AXPIconProviderDefault extends AXPIconProvider {
|
|
1100
|
-
async provide() {
|
|
1101
|
-
return DEFAULT_ICONS;
|
|
1102
|
-
}
|
|
1103
|
-
}
|
|
1104
|
-
class AXPIconStyleProviderDefault extends AXPIconStyleProvider {
|
|
1105
|
-
async provide() {
|
|
1106
|
-
return DEFAULT_ICON_STYLES;
|
|
1107
|
-
}
|
|
1108
|
-
}
|
|
1109
|
-
const AXP_ICON_PROVIDER = new InjectionToken('AXP_ICON_PROVIDER');
|
|
1110
|
-
const AXP_ICON_STYLE_PROVIDER = new InjectionToken('AXP_ICON_STYLE_PROVIDER');
|
|
958
|
+
//#endregion
|
|
959
|
+
//#region ---- Service ----
|
|
1111
960
|
class AXPIconChooserService {
|
|
1112
961
|
constructor() {
|
|
1113
|
-
|
|
1114
|
-
this.iconProviders = (
|
|
1115
|
-
|
|
1116
|
-
if (!injected) {
|
|
1117
|
-
return [this.defaultIconProvider];
|
|
1118
|
-
}
|
|
1119
|
-
const providers = Array.isArray(injected) ? injected : [injected];
|
|
1120
|
-
return [...providers, this.defaultIconProvider];
|
|
1121
|
-
})();
|
|
1122
|
-
this.defaultStyleProvider = new AXPIconStyleProviderDefault();
|
|
1123
|
-
this.styleProviders = (() => {
|
|
1124
|
-
const injected = inject(AXP_ICON_STYLE_PROVIDER, { optional: true });
|
|
1125
|
-
if (!injected) {
|
|
1126
|
-
return [this.defaultStyleProvider];
|
|
1127
|
-
}
|
|
1128
|
-
const providers = Array.isArray(injected) ? injected : [injected];
|
|
1129
|
-
return [...providers, this.defaultStyleProvider];
|
|
1130
|
-
})();
|
|
962
|
+
//#region ---- Properties ----
|
|
963
|
+
this.iconProviders = inject(AXP_ICON_PROVIDER, { optional: true }) ?? [];
|
|
964
|
+
this.styleProviders = inject(AXP_ICON_STYLE_PROVIDER, { optional: true }) ?? [];
|
|
1131
965
|
this.iconsCache = null;
|
|
1132
966
|
this.stylesCache = null;
|
|
1133
967
|
}
|
|
968
|
+
//#endregion
|
|
969
|
+
//#region ---- Public Methods ----
|
|
970
|
+
/**
|
|
971
|
+
* Get all available icon styles from registered providers.
|
|
972
|
+
* Results are cached after first call.
|
|
973
|
+
*/
|
|
1134
974
|
async getStyles() {
|
|
1135
975
|
if (this.stylesCache) {
|
|
1136
976
|
return this.stylesCache;
|
|
1137
977
|
}
|
|
1138
978
|
const allStyles = [];
|
|
1139
|
-
for (const
|
|
1140
|
-
const result = await
|
|
979
|
+
for (const provider of this.styleProviders) {
|
|
980
|
+
const result = await provider.provide();
|
|
1141
981
|
allStyles.push(...result);
|
|
1142
982
|
}
|
|
983
|
+
// Remove duplicates based on style name
|
|
1143
984
|
const uniqueStyles = allStyles.filter((style, index, self) => index === self.findIndex((s) => s.name === style.name));
|
|
1144
985
|
this.stylesCache = uniqueStyles;
|
|
1145
986
|
return uniqueStyles;
|
|
1146
987
|
}
|
|
988
|
+
/**
|
|
989
|
+
* Get all available icons from registered providers.
|
|
990
|
+
* Icons from multiple providers are merged, with duplicates removed.
|
|
991
|
+
* Results are cached after first call.
|
|
992
|
+
*/
|
|
1147
993
|
async getIcons() {
|
|
1148
994
|
if (this.iconsCache) {
|
|
1149
995
|
return this.iconsCache;
|
|
1150
996
|
}
|
|
1151
997
|
const allIcons = [];
|
|
1152
|
-
for (const
|
|
1153
|
-
const result = await
|
|
998
|
+
for (const provider of this.iconProviders) {
|
|
999
|
+
const result = await provider.provide();
|
|
1154
1000
|
allIcons.push(...result);
|
|
1155
1001
|
}
|
|
1002
|
+
// Remove duplicates based on icon name, keeping first occurrence
|
|
1156
1003
|
const uniqueIcons = allIcons.filter((icon, index, self) => index === self.findIndex((i) => i.name === icon.name));
|
|
1157
1004
|
this.iconsCache = uniqueIcons;
|
|
1158
1005
|
return uniqueIcons;
|
|
1159
1006
|
}
|
|
1160
1007
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: AXPIconChooserService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1161
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: AXPIconChooserService }); }
|
|
1008
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: AXPIconChooserService, providedIn: 'root' }); }
|
|
1162
1009
|
}
|
|
1163
1010
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: AXPIconChooserService, decorators: [{
|
|
1164
|
-
type: Injectable
|
|
1011
|
+
type: Injectable,
|
|
1012
|
+
args: [{ providedIn: 'root' }]
|
|
1165
1013
|
}] });
|
|
1166
1014
|
|
|
1167
1015
|
class AXPIconChooserPopupComponent extends AXBasePageComponent {
|
|
@@ -1171,10 +1019,10 @@ class AXPIconChooserPopupComponent extends AXBasePageComponent {
|
|
|
1171
1019
|
this.filteredIcons = [];
|
|
1172
1020
|
this.searchQuery = '';
|
|
1173
1021
|
this.viewModes = [
|
|
1174
|
-
{ value: 'square', text: '
|
|
1022
|
+
{ value: 'square', text: '@general:widgets.icon-chooser.view-mode.square', icon: 'fa-solid fa-border-all' },
|
|
1175
1023
|
{
|
|
1176
1024
|
value: 'rectangle',
|
|
1177
|
-
text: '
|
|
1025
|
+
text: '@general:widgets.icon-chooser.view-mode.rectangle',
|
|
1178
1026
|
icon: 'fa-solid fa-list',
|
|
1179
1027
|
},
|
|
1180
1028
|
];
|
|
@@ -1225,42 +1073,50 @@ class AXPIconChooserPopupComponent extends AXBasePageComponent {
|
|
|
1225
1073
|
return `${this.selectedIconType} fa-${icon.name}`;
|
|
1226
1074
|
}
|
|
1227
1075
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: AXPIconChooserPopupComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
1228
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.4", type: AXPIconChooserPopupComponent, isStandalone: true, selector: "ng-component", inputs: { value: "value" },
|
|
1229
|
-
<div class="ax-flex ax-flex-col ax-h-full ax-
|
|
1230
|
-
|
|
1231
|
-
|
|
1232
|
-
|
|
1233
|
-
|
|
1234
|
-
|
|
1235
|
-
|
|
1236
|
-
|
|
1076
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.4", type: AXPIconChooserPopupComponent, isStandalone: true, selector: "ng-component", inputs: { value: "value" }, usesInheritance: true, ngImport: i0, template: `
|
|
1077
|
+
<div class="ax-flex ax-flex-col ax-h-full ax-bg-lightest">
|
|
1078
|
+
<!-- Fixed Header Section -->
|
|
1079
|
+
<div class="ax-sticky ax-top-0 ax-z-10 ax-bg-lightest ax-border-b ax-p-4 ax-gap-4 ax-flex ax-flex-col">
|
|
1080
|
+
<!-- Search Bar -->
|
|
1081
|
+
<div class="ax-flex ax-justify-center">
|
|
1082
|
+
<ax-search-box
|
|
1083
|
+
class="ax-w-full"
|
|
1084
|
+
(onValueChanged)="handleSearch($event)"
|
|
1085
|
+
[placeholder]="'@general:widgets.icon-chooser.search-placeholder' | translate | async"
|
|
1086
|
+
></ax-search-box>
|
|
1087
|
+
</div>
|
|
1237
1088
|
|
|
1238
|
-
|
|
1239
|
-
<ax-
|
|
1240
|
-
|
|
1241
|
-
|
|
1242
|
-
|
|
1243
|
-
|
|
1244
|
-
|
|
1245
|
-
|
|
1246
|
-
|
|
1247
|
-
|
|
1248
|
-
|
|
1089
|
+
<!-- Controls Row -->
|
|
1090
|
+
<div class="ax-flex ax-justify-between ax-items-center ax-flex-wrap ax-gap-2">
|
|
1091
|
+
<!-- Icon Style Filter -->
|
|
1092
|
+
<ax-button-group selection="single" look="outline">
|
|
1093
|
+
@for (item of iconTypes; track item.name) {
|
|
1094
|
+
<ax-button-group-item
|
|
1095
|
+
[text]="item.label"
|
|
1096
|
+
[selected]="item.name === selectedIconType"
|
|
1097
|
+
(onClick)="handleIconTypeChange(item)"
|
|
1098
|
+
>
|
|
1099
|
+
</ax-button-group-item>
|
|
1100
|
+
}
|
|
1101
|
+
</ax-button-group>
|
|
1249
1102
|
|
|
1250
|
-
|
|
1251
|
-
|
|
1252
|
-
|
|
1253
|
-
|
|
1254
|
-
|
|
1255
|
-
|
|
1256
|
-
|
|
1257
|
-
|
|
1258
|
-
|
|
1259
|
-
|
|
1260
|
-
|
|
1103
|
+
<!-- View Mode Toggle -->
|
|
1104
|
+
<ax-button-group selection="single" look="outline">
|
|
1105
|
+
@for (item of viewModes; track item.value) {
|
|
1106
|
+
<ax-button-group-item
|
|
1107
|
+
[title]="item.text | translate | async"
|
|
1108
|
+
[selected]="item.value === selectedViewMode"
|
|
1109
|
+
(onClick)="handleViewModeChange(item)"
|
|
1110
|
+
>
|
|
1111
|
+
<ax-icon [class]="item.icon"></ax-icon>
|
|
1112
|
+
</ax-button-group-item>
|
|
1113
|
+
}
|
|
1114
|
+
</ax-button-group>
|
|
1115
|
+
</div>
|
|
1261
1116
|
</div>
|
|
1262
1117
|
|
|
1263
|
-
|
|
1118
|
+
<!-- Scrollable Content Area -->
|
|
1119
|
+
<div class="ax-flex-1 ax-overflow-y-auto ax-p-4 ax-pt-2">
|
|
1264
1120
|
<div
|
|
1265
1121
|
class="ax-grid ax-gap-1"
|
|
1266
1122
|
[ngClass]="
|
|
@@ -1292,47 +1148,55 @@ class AXPIconChooserPopupComponent extends AXBasePageComponent {
|
|
|
1292
1148
|
</div>
|
|
1293
1149
|
</div>
|
|
1294
1150
|
</div>
|
|
1295
|
-
`, isInline: true, dependencies: [{ kind: "ngmodule", type: AXSearchBoxModule }, { kind: "component", type: i4$1.AXSearchBoxComponent, selector: "ax-search-box", inputs: ["disabled", "readonly", "tabIndex", "placeholder", "value", "state", "name", "id", "look", "class", "delayTime", "type"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "readonlyChange", "disabledChange", "onKeyDown", "onKeyUp", "onKeyPress"] }, { kind: "ngmodule", type: AXButtonGroupModule }, { kind: "component", type: i2$
|
|
1151
|
+
`, isInline: true, dependencies: [{ kind: "ngmodule", type: AXSearchBoxModule }, { kind: "component", type: i4$1.AXSearchBoxComponent, selector: "ax-search-box", inputs: ["disabled", "readonly", "tabIndex", "placeholder", "value", "state", "name", "id", "look", "class", "delayTime", "type"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "readonlyChange", "disabledChange", "onKeyDown", "onKeyUp", "onKeyPress"] }, { kind: "ngmodule", type: AXButtonGroupModule }, { kind: "component", type: i2$2.AXButtonGroupComponent, selector: "ax-button-group", inputs: ["disabled", "color", "look", "fitParent", "selection"], outputs: ["onBlur", "onFocus", "lookChange", "colorChange", "disabledChange", "onClick", "selectionChange", "selectedButtonChange"] }, { kind: "component", type: i2$2.AXButtonGroupItemComponent, selector: "ax-button-group-item", inputs: ["color", "disabled", "text", "selected", "divided", "data", "name"], outputs: ["onClick", "onFocus", "onBlur", "disabledChange"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i3.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
1296
1152
|
}
|
|
1297
1153
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: AXPIconChooserPopupComponent, decorators: [{
|
|
1298
1154
|
type: Component,
|
|
1299
1155
|
args: [{
|
|
1300
1156
|
template: `
|
|
1301
|
-
<div class="ax-flex ax-flex-col ax-h-full ax-
|
|
1302
|
-
|
|
1303
|
-
|
|
1304
|
-
|
|
1305
|
-
|
|
1306
|
-
|
|
1307
|
-
|
|
1308
|
-
|
|
1157
|
+
<div class="ax-flex ax-flex-col ax-h-full ax-bg-lightest">
|
|
1158
|
+
<!-- Fixed Header Section -->
|
|
1159
|
+
<div class="ax-sticky ax-top-0 ax-z-10 ax-bg-lightest ax-border-b ax-p-4 ax-gap-4 ax-flex ax-flex-col">
|
|
1160
|
+
<!-- Search Bar -->
|
|
1161
|
+
<div class="ax-flex ax-justify-center">
|
|
1162
|
+
<ax-search-box
|
|
1163
|
+
class="ax-w-full"
|
|
1164
|
+
(onValueChanged)="handleSearch($event)"
|
|
1165
|
+
[placeholder]="'@general:widgets.icon-chooser.search-placeholder' | translate | async"
|
|
1166
|
+
></ax-search-box>
|
|
1167
|
+
</div>
|
|
1309
1168
|
|
|
1310
|
-
|
|
1311
|
-
<ax-
|
|
1312
|
-
|
|
1313
|
-
|
|
1314
|
-
|
|
1315
|
-
|
|
1316
|
-
|
|
1317
|
-
|
|
1318
|
-
|
|
1319
|
-
|
|
1320
|
-
|
|
1169
|
+
<!-- Controls Row -->
|
|
1170
|
+
<div class="ax-flex ax-justify-between ax-items-center ax-flex-wrap ax-gap-2">
|
|
1171
|
+
<!-- Icon Style Filter -->
|
|
1172
|
+
<ax-button-group selection="single" look="outline">
|
|
1173
|
+
@for (item of iconTypes; track item.name) {
|
|
1174
|
+
<ax-button-group-item
|
|
1175
|
+
[text]="item.label"
|
|
1176
|
+
[selected]="item.name === selectedIconType"
|
|
1177
|
+
(onClick)="handleIconTypeChange(item)"
|
|
1178
|
+
>
|
|
1179
|
+
</ax-button-group-item>
|
|
1180
|
+
}
|
|
1181
|
+
</ax-button-group>
|
|
1321
1182
|
|
|
1322
|
-
|
|
1323
|
-
|
|
1324
|
-
|
|
1325
|
-
|
|
1326
|
-
|
|
1327
|
-
|
|
1328
|
-
|
|
1329
|
-
|
|
1330
|
-
|
|
1331
|
-
|
|
1332
|
-
|
|
1183
|
+
<!-- View Mode Toggle -->
|
|
1184
|
+
<ax-button-group selection="single" look="outline">
|
|
1185
|
+
@for (item of viewModes; track item.value) {
|
|
1186
|
+
<ax-button-group-item
|
|
1187
|
+
[title]="item.text | translate | async"
|
|
1188
|
+
[selected]="item.value === selectedViewMode"
|
|
1189
|
+
(onClick)="handleViewModeChange(item)"
|
|
1190
|
+
>
|
|
1191
|
+
<ax-icon [class]="item.icon"></ax-icon>
|
|
1192
|
+
</ax-button-group-item>
|
|
1193
|
+
}
|
|
1194
|
+
</ax-button-group>
|
|
1195
|
+
</div>
|
|
1333
1196
|
</div>
|
|
1334
1197
|
|
|
1335
|
-
|
|
1198
|
+
<!-- Scrollable Content Area -->
|
|
1199
|
+
<div class="ax-flex-1 ax-overflow-y-auto ax-p-4 ax-pt-2">
|
|
1336
1200
|
<div
|
|
1337
1201
|
class="ax-grid ax-gap-1"
|
|
1338
1202
|
[ngClass]="
|
|
@@ -1365,8 +1229,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.4", ngImpor
|
|
|
1365
1229
|
</div>
|
|
1366
1230
|
</div>
|
|
1367
1231
|
`,
|
|
1368
|
-
imports: [AXSearchBoxModule, AXButtonGroupModule, CommonModule, AXDecoratorModule],
|
|
1369
|
-
providers: [AXPIconChooserService],
|
|
1232
|
+
imports: [AXSearchBoxModule, AXButtonGroupModule, CommonModule, AXDecoratorModule, AXTranslationModule],
|
|
1370
1233
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
1371
1234
|
}]
|
|
1372
1235
|
}], propDecorators: { value: [{
|
|
@@ -1508,6 +1371,546 @@ const AXPIconChooserWidget = {
|
|
|
1508
1371
|
},
|
|
1509
1372
|
};
|
|
1510
1373
|
|
|
1374
|
+
//#region ---- Default Icon Styles ----
|
|
1375
|
+
const DEFAULT_ICON_STYLES = [
|
|
1376
|
+
{ name: 'fa-regular', label: 'Regular' },
|
|
1377
|
+
{ name: 'fa-solid', label: 'Solid' },
|
|
1378
|
+
];
|
|
1379
|
+
//#endregion
|
|
1380
|
+
//#region ---- Default Icons ----
|
|
1381
|
+
const DEFAULT_ICONS = [
|
|
1382
|
+
// Navigation & Actions
|
|
1383
|
+
{ name: 'house', label: 'House', tags: ['home', 'building', 'house'] },
|
|
1384
|
+
{ name: 'magnifying-glass', label: 'Search', tags: ['find', 'zoom'] },
|
|
1385
|
+
{ name: 'user', label: 'User', tags: ['person', 'account'] },
|
|
1386
|
+
{ name: 'users', label: 'Users', tags: ['people', 'group', 'team'] },
|
|
1387
|
+
{ name: 'user-group', label: 'User Group', tags: ['team', 'group', 'people'] },
|
|
1388
|
+
{ name: 'check', label: 'Check', tags: ['confirm', 'done', 'tick'] },
|
|
1389
|
+
{ name: 'check-circle', label: 'Check Circle', tags: ['confirm', 'success', 'done'] },
|
|
1390
|
+
{ name: 'check-double', label: 'Check Double', tags: ['verified', 'confirmed'] },
|
|
1391
|
+
{ name: 'xmark', label: 'Close', tags: ['cancel', 'exit', 'remove'] },
|
|
1392
|
+
{ name: 'circle-xmark', label: 'Circle Close', tags: ['cancel', 'error', 'remove'] },
|
|
1393
|
+
{ name: 'plus', label: 'Add', tags: ['create', 'new', 'plus'] },
|
|
1394
|
+
{ name: 'circle-plus', label: 'Circle Plus', tags: ['add', 'create', 'new'] },
|
|
1395
|
+
{ name: 'minus', label: 'Remove', tags: ['delete', 'subtract', 'minus'] },
|
|
1396
|
+
{ name: 'circle-minus', label: 'Circle Minus', tags: ['remove', 'subtract'] },
|
|
1397
|
+
{ name: 'edit', label: 'Edit', tags: ['modify', 'change', 'pencil'] },
|
|
1398
|
+
{ name: 'pen-to-square', label: 'Edit Square', tags: ['edit', 'modify', 'write'] },
|
|
1399
|
+
{ name: 'trash', label: 'Delete', tags: ['remove', 'delete', 'bin'] },
|
|
1400
|
+
{ name: 'trash-can', label: 'Trash Can', tags: ['delete', 'remove', 'garbage'] },
|
|
1401
|
+
{ name: 'copy', label: 'Copy', tags: ['duplicate', 'clone'] },
|
|
1402
|
+
{ name: 'clone', label: 'Clone', tags: ['duplicate', 'copy'] },
|
|
1403
|
+
{ name: 'download', label: 'Download', tags: ['save', 'export'] },
|
|
1404
|
+
{ name: 'upload', label: 'Upload', tags: ['import', 'send'] },
|
|
1405
|
+
{ name: 'print', label: 'Print', tags: ['printer', 'document'] },
|
|
1406
|
+
{ name: 'share', label: 'Share', tags: ['send', 'distribute'] },
|
|
1407
|
+
{ name: 'share-nodes', label: 'Share Network', tags: ['share', 'distribute', 'network'] },
|
|
1408
|
+
{ name: 'link', label: 'Link', tags: ['url', 'connection'] },
|
|
1409
|
+
{ name: 'link-slash', label: 'Unlink', tags: ['disconnect', 'remove'] },
|
|
1410
|
+
{ name: 'external-link', label: 'External Link', tags: ['open', 'external'] },
|
|
1411
|
+
{ name: 'arrows-rotate', label: 'Refresh', tags: ['reload', 'sync', 'update'] },
|
|
1412
|
+
{ name: 'rotate-right', label: 'Rotate Right', tags: ['refresh', 'reload'] },
|
|
1413
|
+
{ name: 'arrows-left-right', label: 'Arrows Horizontal', tags: ['swap', 'exchange'] },
|
|
1414
|
+
{ name: 'arrow-up', label: 'Arrow Up', tags: ['up', 'direction'] },
|
|
1415
|
+
{ name: 'arrow-down', label: 'Arrow Down', tags: ['down', 'direction'] },
|
|
1416
|
+
{ name: 'arrow-left', label: 'Arrow Left', tags: ['left', 'back', 'previous'] },
|
|
1417
|
+
{ name: 'arrow-right', label: 'Arrow Right', tags: ['right', 'forward', 'next'] },
|
|
1418
|
+
{ name: 'chevron-up', label: 'Chevron Up', tags: ['up', 'collapse'] },
|
|
1419
|
+
{ name: 'chevron-down', label: 'Chevron Down', tags: ['down', 'expand'] },
|
|
1420
|
+
{ name: 'chevron-left', label: 'Chevron Left', tags: ['left', 'previous'] },
|
|
1421
|
+
{ name: 'chevron-right', label: 'Chevron Right', tags: ['right', 'next'] },
|
|
1422
|
+
{ name: 'angle-up', label: 'Angle Up', tags: ['up', 'caret'] },
|
|
1423
|
+
{ name: 'angle-down', label: 'Angle Down', tags: ['down', 'caret'] },
|
|
1424
|
+
{ name: 'angle-left', label: 'Angle Left', tags: ['left', 'caret'] },
|
|
1425
|
+
{ name: 'angle-right', label: 'Angle Right', tags: ['right', 'caret'] },
|
|
1426
|
+
{ name: 'bars', label: 'Menu', tags: ['hamburger', 'menu', 'navigation'] },
|
|
1427
|
+
{ name: 'ellipsis', label: 'Ellipsis', tags: ['more', 'options', 'menu'] },
|
|
1428
|
+
{ name: 'ellipsis-vertical', label: 'Ellipsis Vertical', tags: ['more', 'options', 'menu'] },
|
|
1429
|
+
{ name: 'grip', label: 'Grip', tags: ['drag', 'handle', 'move'] },
|
|
1430
|
+
{ name: 'grip-vertical', label: 'Grip Vertical', tags: ['drag', 'handle', 'move'] },
|
|
1431
|
+
{ name: 'filter', label: 'Filter', tags: ['sort', 'search', 'refine'] },
|
|
1432
|
+
{ name: 'sliders', label: 'Settings', tags: ['adjust', 'options', 'preferences'] },
|
|
1433
|
+
// Media & Files
|
|
1434
|
+
{ name: 'star', label: 'Star', tags: ['favorite', 'rate'] },
|
|
1435
|
+
{ name: 'star-half', label: 'Star Half', tags: ['rating', 'half'] },
|
|
1436
|
+
{ name: 'heart', label: 'Heart', tags: ['love', 'like', 'favorite'] },
|
|
1437
|
+
{ name: 'heart-pulse', label: 'Heart Pulse', tags: ['health', 'medical', 'heartbeat'] },
|
|
1438
|
+
{ name: 'cloud', label: 'Cloud', tags: ['weather', 'sky', 'storage'] },
|
|
1439
|
+
{ name: 'cloud-arrow-up', label: 'Cloud Upload', tags: ['upload', 'backup', 'save'] },
|
|
1440
|
+
{ name: 'cloud-arrow-down', label: 'Cloud Download', tags: ['download', 'restore'] },
|
|
1441
|
+
{ name: 'envelope', label: 'Envelope', tags: ['mail', 'message', 'email'] },
|
|
1442
|
+
{ name: 'envelope-open', label: 'Envelope Open', tags: ['mail', 'read', 'message'] },
|
|
1443
|
+
{ name: 'paper-plane', label: 'Send', tags: ['send', 'message', 'email'] },
|
|
1444
|
+
{ name: 'folder', label: 'Folder', tags: ['directory', 'files'] },
|
|
1445
|
+
{ name: 'folder-open', label: 'Folder Open', tags: ['directory', 'files', 'open'] },
|
|
1446
|
+
{ name: 'folder-plus', label: 'New Folder', tags: ['create', 'directory', 'add'] },
|
|
1447
|
+
{ name: 'folder-tree', label: 'Folder Tree', tags: ['structure', 'hierarchy', 'files'] },
|
|
1448
|
+
{ name: 'gear', label: 'Gear', tags: ['settings', 'options', 'config'] },
|
|
1449
|
+
{ name: 'gears', label: 'Gears', tags: ['settings', 'configuration', 'system'] },
|
|
1450
|
+
{ name: 'camera', label: 'Camera', tags: ['photo', 'image', 'picture'] },
|
|
1451
|
+
{ name: 'camera-retro', label: 'Camera Retro', tags: ['photo', 'vintage'] },
|
|
1452
|
+
{ name: 'video', label: 'Video', tags: ['film', 'movie', 'camera'] },
|
|
1453
|
+
{ name: 'video-slash', label: 'Video Off', tags: ['disabled', 'mute', 'off'] },
|
|
1454
|
+
{ name: 'music', label: 'Music', tags: ['sound', 'audio', 'song'] },
|
|
1455
|
+
{ name: 'file', label: 'File', tags: ['document', 'file'] },
|
|
1456
|
+
{ name: 'file-lines', label: 'File Text', tags: ['document', 'text'] },
|
|
1457
|
+
{ name: 'file-pdf', label: 'PDF', tags: ['document', 'pdf'] },
|
|
1458
|
+
{ name: 'file-word', label: 'Word Document', tags: ['document', 'word', 'doc'] },
|
|
1459
|
+
{ name: 'file-excel', label: 'Excel', tags: ['spreadsheet', 'excel', 'xls'] },
|
|
1460
|
+
{ name: 'file-powerpoint', label: 'PowerPoint', tags: ['presentation', 'powerpoint', 'ppt'] },
|
|
1461
|
+
{ name: 'file-image', label: 'Image File', tags: ['picture', 'photo', 'image'] },
|
|
1462
|
+
{ name: 'file-video', label: 'Video File', tags: ['movie', 'clip', 'video'] },
|
|
1463
|
+
{ name: 'file-audio', label: 'Audio File', tags: ['sound', 'music', 'audio'] },
|
|
1464
|
+
{ name: 'file-code', label: 'Code File', tags: ['code', 'programming', 'source'] },
|
|
1465
|
+
{ name: 'file-zipper', label: 'Archive', tags: ['zip', 'compressed', 'archive'] },
|
|
1466
|
+
{ name: 'file-csv', label: 'CSV File', tags: ['spreadsheet', 'data', 'csv'] },
|
|
1467
|
+
{ name: 'image', label: 'Image', tags: ['picture', 'photo'] },
|
|
1468
|
+
{ name: 'images', label: 'Images', tags: ['gallery', 'photos', 'pictures'] },
|
|
1469
|
+
{ name: 'photo-film', label: 'Photo Film', tags: ['gallery', 'images', 'media'] },
|
|
1470
|
+
{ name: 'microphone', label: 'Microphone', tags: ['audio', 'voice', 'record'] },
|
|
1471
|
+
{ name: 'microphone-slash', label: 'Microphone Off', tags: ['mute', 'audio', 'off'] },
|
|
1472
|
+
{ name: 'volume-high', label: 'Volume High', tags: ['sound', 'audio', 'loud'] },
|
|
1473
|
+
{ name: 'volume-low', label: 'Volume Low', tags: ['sound', 'audio', 'quiet'] },
|
|
1474
|
+
{ name: 'volume-xmark', label: 'Mute', tags: ['mute', 'silent', 'off'] },
|
|
1475
|
+
// Communication & Social
|
|
1476
|
+
{ name: 'phone', label: 'Phone', tags: ['call', 'telephone', 'contact'] },
|
|
1477
|
+
{ name: 'phone-flip', label: 'Phone Flip', tags: ['call', 'mobile', 'flip'] },
|
|
1478
|
+
{ name: 'mobile', label: 'Mobile', tags: ['cell', 'smartphone', 'phone'] },
|
|
1479
|
+
{ name: 'mobile-screen', label: 'Mobile Screen', tags: ['smartphone', 'device'] },
|
|
1480
|
+
{ name: 'fax', label: 'Fax', tags: ['document', 'send', 'print'] },
|
|
1481
|
+
{ name: 'comment', label: 'Comment', tags: ['message', 'chat', 'text'] },
|
|
1482
|
+
{ name: 'comments', label: 'Comments', tags: ['messages', 'discussion', 'chat'] },
|
|
1483
|
+
{ name: 'comment-dots', label: 'Comment Typing', tags: ['message', 'typing', 'chat'] },
|
|
1484
|
+
{ name: 'message', label: 'Message', tags: ['chat', 'text', 'communication'] },
|
|
1485
|
+
{ name: 'inbox', label: 'Inbox', tags: ['mail', 'messages', 'receive'] },
|
|
1486
|
+
{ name: 'at', label: 'At Symbol', tags: ['email', 'mention', 'tag'] },
|
|
1487
|
+
{ name: 'hashtag', label: 'Hashtag', tags: ['tag', 'social', 'topic'] },
|
|
1488
|
+
{ name: 'thumbs-up', label: 'Like', tags: ['approve', 'good', 'positive'] },
|
|
1489
|
+
{ name: 'thumbs-down', label: 'Dislike', tags: ['disapprove', 'bad', 'negative'] },
|
|
1490
|
+
{ name: 'bell', label: 'Notification', tags: ['alert', 'reminder', 'notification'] },
|
|
1491
|
+
{ name: 'bell-slash', label: 'Notifications Off', tags: ['mute', 'silent', 'off'] },
|
|
1492
|
+
{ name: 'flag', label: 'Flag', tags: ['mark', 'report', 'bookmark'] },
|
|
1493
|
+
{ name: 'flag-checkered', label: 'Flag Checkered', tags: ['finish', 'end', 'goal'] },
|
|
1494
|
+
{ name: 'bookmark', label: 'Bookmark', tags: ['save', 'favorite', 'mark'] },
|
|
1495
|
+
{ name: 'calendar', label: 'Calendar', tags: ['date', 'schedule', 'event'] },
|
|
1496
|
+
{ name: 'calendar-days', label: 'Calendar Days', tags: ['date', 'month', 'schedule'] },
|
|
1497
|
+
{ name: 'calendar-check', label: 'Calendar Check', tags: ['event', 'confirmed', 'scheduled'] },
|
|
1498
|
+
{ name: 'calendar-plus', label: 'Calendar Add', tags: ['event', 'create', 'schedule'] },
|
|
1499
|
+
{ name: 'clock', label: 'Clock', tags: ['time', 'schedule', 'hour'] },
|
|
1500
|
+
{ name: 'hourglass', label: 'Hourglass', tags: ['time', 'waiting', 'timer'] },
|
|
1501
|
+
{ name: 'stopwatch', label: 'Stopwatch', tags: ['timer', 'time', 'track'] },
|
|
1502
|
+
{ name: 'rss', label: 'RSS', tags: ['feed', 'news', 'subscribe'] },
|
|
1503
|
+
// Business & Finance
|
|
1504
|
+
{ name: 'chart-line', label: 'Chart Line', tags: ['graph', 'analytics', 'trending'] },
|
|
1505
|
+
{ name: 'chart-bar', label: 'Bar Chart', tags: ['graph', 'statistics', 'data'] },
|
|
1506
|
+
{ name: 'chart-pie', label: 'Pie Chart', tags: ['graph', 'percentage', 'data'] },
|
|
1507
|
+
{ name: 'chart-area', label: 'Area Chart', tags: ['graph', 'analytics', 'data'] },
|
|
1508
|
+
{ name: 'chart-column', label: 'Column Chart', tags: ['graph', 'statistics'] },
|
|
1509
|
+
{ name: 'chart-simple', label: 'Simple Chart', tags: ['graph', 'data', 'analytics'] },
|
|
1510
|
+
{ name: 'calculator', label: 'Calculator', tags: ['math', 'compute', 'calculate'] },
|
|
1511
|
+
{ name: 'percent', label: 'Percent', tags: ['percentage', 'discount', 'rate'] },
|
|
1512
|
+
{ name: 'dollar-sign', label: 'Dollar', tags: ['money', 'currency', 'usd'] },
|
|
1513
|
+
{ name: 'euro-sign', label: 'Euro', tags: ['money', 'currency', 'eur'] },
|
|
1514
|
+
{ name: 'sterling-sign', label: 'Pound', tags: ['money', 'currency', 'gbp'] },
|
|
1515
|
+
{ name: 'yen-sign', label: 'Yen', tags: ['money', 'currency', 'jpy'] },
|
|
1516
|
+
{ name: 'coins', label: 'Coins', tags: ['money', 'cash', 'currency'] },
|
|
1517
|
+
{ name: 'money-bill', label: 'Money Bill', tags: ['cash', 'currency', 'payment'] },
|
|
1518
|
+
{ name: 'wallet', label: 'Wallet', tags: ['money', 'payment', 'cash'] },
|
|
1519
|
+
{ name: 'credit-card', label: 'Credit Card', tags: ['payment', 'card', 'bank'] },
|
|
1520
|
+
{ name: 'money-check', label: 'Check', tags: ['payment', 'bank', 'check'] },
|
|
1521
|
+
{ name: 'receipt', label: 'Receipt', tags: ['bill', 'invoice', 'payment'] },
|
|
1522
|
+
{ name: 'file-invoice', label: 'Invoice', tags: ['bill', 'receipt', 'document'] },
|
|
1523
|
+
{ name: 'file-invoice-dollar', label: 'Invoice Dollar', tags: ['bill', 'payment', 'money'] },
|
|
1524
|
+
{ name: 'briefcase', label: 'Briefcase', tags: ['business', 'work', 'professional'] },
|
|
1525
|
+
{ name: 'suitcase', label: 'Suitcase', tags: ['travel', 'business', 'luggage'] },
|
|
1526
|
+
{ name: 'building', label: 'Building', tags: ['office', 'company', 'business'] },
|
|
1527
|
+
{ name: 'building-columns', label: 'Bank', tags: ['bank', 'government', 'institution'] },
|
|
1528
|
+
{ name: 'store', label: 'Store', tags: ['shop', 'retail', 'business'] },
|
|
1529
|
+
{ name: 'handshake', label: 'Handshake', tags: ['agreement', 'partnership', 'deal'] },
|
|
1530
|
+
{ name: 'scale-balanced', label: 'Balance', tags: ['law', 'justice', 'legal'] },
|
|
1531
|
+
{ name: 'gavel', label: 'Gavel', tags: ['law', 'court', 'legal'] },
|
|
1532
|
+
// Technology & Tools
|
|
1533
|
+
{ name: 'laptop', label: 'Laptop', tags: ['computer', 'notebook', 'device'] },
|
|
1534
|
+
{ name: 'laptop-code', label: 'Laptop Code', tags: ['programming', 'development'] },
|
|
1535
|
+
{ name: 'desktop', label: 'Desktop', tags: ['computer', 'monitor', 'screen'] },
|
|
1536
|
+
{ name: 'tablet', label: 'Tablet', tags: ['ipad', 'device', 'mobile'] },
|
|
1537
|
+
{ name: 'tablet-screen-button', label: 'Tablet Button', tags: ['device', 'touch'] },
|
|
1538
|
+
{ name: 'keyboard', label: 'Keyboard', tags: ['input', 'typing', 'keys'] },
|
|
1539
|
+
{ name: 'mouse', label: 'Mouse', tags: ['pointer', 'click', 'input'] },
|
|
1540
|
+
{ name: 'display', label: 'Display', tags: ['monitor', 'screen', 'computer'] },
|
|
1541
|
+
{ name: 'wifi', label: 'WiFi', tags: ['internet', 'connection', 'wireless'] },
|
|
1542
|
+
{ name: 'ethernet', label: 'Ethernet', tags: ['network', 'connection', 'cable'] },
|
|
1543
|
+
{ name: 'signal', label: 'Signal', tags: ['network', 'connection', 'wifi'] },
|
|
1544
|
+
{ name: 'network-wired', label: 'Network', tags: ['connection', 'lan', 'ethernet'] },
|
|
1545
|
+
{ name: 'database', label: 'Database', tags: ['data', 'storage', 'sql'] },
|
|
1546
|
+
{ name: 'hard-drive', label: 'Hard Drive', tags: ['storage', 'disk', 'hdd'] },
|
|
1547
|
+
{ name: 'server', label: 'Server', tags: ['hosting', 'backend', 'computer'] },
|
|
1548
|
+
{ name: 'memory', label: 'Memory', tags: ['ram', 'chip', 'hardware'] },
|
|
1549
|
+
{ name: 'microchip', label: 'Microchip', tags: ['chip', 'processor', 'cpu'] },
|
|
1550
|
+
{ name: 'code', label: 'Code', tags: ['programming', 'development', 'coding'] },
|
|
1551
|
+
{ name: 'code-branch', label: 'Git Branch', tags: ['version', 'git', 'branch'] },
|
|
1552
|
+
{ name: 'code-commit', label: 'Commit', tags: ['git', 'version', 'save'] },
|
|
1553
|
+
{ name: 'code-merge', label: 'Merge', tags: ['git', 'branch', 'combine'] },
|
|
1554
|
+
{ name: 'code-pull-request', label: 'Pull Request', tags: ['git', 'pr', 'review'] },
|
|
1555
|
+
{ name: 'terminal', label: 'Terminal', tags: ['console', 'command', 'cli'] },
|
|
1556
|
+
{ name: 'window-maximize', label: 'Maximize', tags: ['window', 'expand', 'fullscreen'] },
|
|
1557
|
+
{ name: 'window-minimize', label: 'Minimize', tags: ['window', 'collapse'] },
|
|
1558
|
+
{ name: 'window-restore', label: 'Restore', tags: ['window', 'resize'] },
|
|
1559
|
+
{ name: 'bug', label: 'Bug', tags: ['error', 'debug', 'issue'] },
|
|
1560
|
+
{ name: 'wrench', label: 'Wrench', tags: ['tools', 'settings', 'fix'] },
|
|
1561
|
+
{ name: 'screwdriver-wrench', label: 'Tools', tags: ['repair', 'fix', 'settings'] },
|
|
1562
|
+
{ name: 'hammer', label: 'Hammer', tags: ['tool', 'build', 'construct'] },
|
|
1563
|
+
{ name: 'shield', label: 'Shield', tags: ['security', 'protection', 'defense'] },
|
|
1564
|
+
{ name: 'shield-halved', label: 'Shield Half', tags: ['security', 'protection'] },
|
|
1565
|
+
{ name: 'lock', label: 'Lock', tags: ['security', 'private', 'secure'] },
|
|
1566
|
+
{ name: 'lock-open', label: 'Lock Open', tags: ['unlocked', 'open'] },
|
|
1567
|
+
{ name: 'unlock', label: 'Unlock', tags: ['open', 'access', 'unlock'] },
|
|
1568
|
+
{ name: 'key', label: 'Key', tags: ['access', 'password', 'security'] },
|
|
1569
|
+
{ name: 'user-lock', label: 'User Lock', tags: ['security', 'private', 'protected'] },
|
|
1570
|
+
{ name: 'user-shield', label: 'User Shield', tags: ['security', 'protected', 'admin'] },
|
|
1571
|
+
{ name: 'qrcode', label: 'QR Code', tags: ['code', 'scan', 'barcode'] },
|
|
1572
|
+
{ name: 'barcode', label: 'Barcode', tags: ['scan', 'code', 'product'] },
|
|
1573
|
+
// Transportation & Location
|
|
1574
|
+
{ name: 'car', label: 'Car', tags: ['vehicle', 'automobile', 'transport'] },
|
|
1575
|
+
{ name: 'car-side', label: 'Car Side', tags: ['vehicle', 'automobile'] },
|
|
1576
|
+
{ name: 'taxi', label: 'Taxi', tags: ['cab', 'transport', 'vehicle'] },
|
|
1577
|
+
{ name: 'bus', label: 'Bus', tags: ['transport', 'public', 'vehicle'] },
|
|
1578
|
+
{ name: 'van-shuttle', label: 'Van', tags: ['transport', 'vehicle'] },
|
|
1579
|
+
{ name: 'truck', label: 'Truck', tags: ['vehicle', 'delivery', 'transport'] },
|
|
1580
|
+
{ name: 'truck-fast', label: 'Fast Delivery', tags: ['shipping', 'express', 'delivery'] },
|
|
1581
|
+
{ name: 'motorcycle', label: 'Motorcycle', tags: ['bike', 'vehicle', 'transport'] },
|
|
1582
|
+
{ name: 'plane', label: 'Plane', tags: ['aircraft', 'travel', 'flight'] },
|
|
1583
|
+
{ name: 'plane-departure', label: 'Departure', tags: ['flight', 'travel', 'takeoff'] },
|
|
1584
|
+
{ name: 'plane-arrival', label: 'Arrival', tags: ['flight', 'travel', 'landing'] },
|
|
1585
|
+
{ name: 'helicopter', label: 'Helicopter', tags: ['aircraft', 'flight'] },
|
|
1586
|
+
{ name: 'rocket', label: 'Rocket', tags: ['space', 'launch', 'fast'] },
|
|
1587
|
+
{ name: 'train', label: 'Train', tags: ['railway', 'transport', 'travel'] },
|
|
1588
|
+
{ name: 'subway', label: 'Subway', tags: ['metro', 'underground', 'transport'] },
|
|
1589
|
+
{ name: 'ship', label: 'Ship', tags: ['boat', 'vessel', 'water'] },
|
|
1590
|
+
{ name: 'anchor', label: 'Anchor', tags: ['ship', 'marine', 'boat'] },
|
|
1591
|
+
{ name: 'bicycle', label: 'Bicycle', tags: ['bike', 'cycle', 'transport'] },
|
|
1592
|
+
{ name: 'road', label: 'Road', tags: ['street', 'path', 'route'] },
|
|
1593
|
+
{ name: 'map', label: 'Map', tags: ['location', 'navigation', 'directions'] },
|
|
1594
|
+
{ name: 'map-location', label: 'Map Location', tags: ['pin', 'marker', 'place'] },
|
|
1595
|
+
{ name: 'map-pin', label: 'Location Pin', tags: ['pin', 'marker', 'place'] },
|
|
1596
|
+
{ name: 'location-dot', label: 'Location', tags: ['pin', 'marker', 'gps'] },
|
|
1597
|
+
{ name: 'location-crosshairs', label: 'GPS', tags: ['location', 'position', 'gps'] },
|
|
1598
|
+
{ name: 'route', label: 'Route', tags: ['directions', 'path', 'navigation'] },
|
|
1599
|
+
{ name: 'globe', label: 'Globe', tags: ['world', 'earth', 'global'] },
|
|
1600
|
+
{ name: 'earth-americas', label: 'Americas', tags: ['world', 'global', 'earth'] },
|
|
1601
|
+
{ name: 'earth-europe', label: 'Europe', tags: ['world', 'global', 'earth'] },
|
|
1602
|
+
{ name: 'earth-asia', label: 'Asia', tags: ['world', 'global', 'earth'] },
|
|
1603
|
+
{ name: 'compass', label: 'Compass', tags: ['direction', 'navigation', 'north'] },
|
|
1604
|
+
{ name: 'street-view', label: 'Street View', tags: ['location', 'map', 'view'] },
|
|
1605
|
+
// Health & Medical
|
|
1606
|
+
{ name: 'heart-pulse', label: 'Heart Rate', tags: ['health', 'medical', 'heartbeat'] },
|
|
1607
|
+
{ name: 'heart-circle-plus', label: 'Heart Plus', tags: ['health', 'add', 'medical'] },
|
|
1608
|
+
{ name: 'stethoscope', label: 'Stethoscope', tags: ['medical', 'doctor', 'health'] },
|
|
1609
|
+
{ name: 'user-doctor', label: 'Doctor', tags: ['medical', 'physician', 'healthcare'] },
|
|
1610
|
+
{ name: 'user-nurse', label: 'Nurse', tags: ['medical', 'healthcare', 'hospital'] },
|
|
1611
|
+
{ name: 'pills', label: 'Pills', tags: ['medicine', 'drugs', 'medication'] },
|
|
1612
|
+
{ name: 'capsules', label: 'Capsules', tags: ['medicine', 'pills', 'medication'] },
|
|
1613
|
+
{ name: 'prescription-bottle', label: 'Prescription', tags: ['medicine', 'pharmacy'] },
|
|
1614
|
+
{ name: 'syringe', label: 'Syringe', tags: ['injection', 'medical', 'vaccine'] },
|
|
1615
|
+
{ name: 'vial', label: 'Vial', tags: ['medicine', 'vaccine', 'medical'] },
|
|
1616
|
+
{ name: 'bandage', label: 'Bandage', tags: ['first aid', 'wound', 'medical'] },
|
|
1617
|
+
{ name: 'thermometer', label: 'Thermometer', tags: ['temperature', 'health', 'medical'] },
|
|
1618
|
+
{ name: 'hospital', label: 'Hospital', tags: ['medical', 'healthcare', 'building'] },
|
|
1619
|
+
{ name: 'hospital-user', label: 'Patient', tags: ['medical', 'healthcare', 'patient'] },
|
|
1620
|
+
{ name: 'bed-pulse', label: 'Hospital Bed', tags: ['medical', 'patient', 'hospital'] },
|
|
1621
|
+
{ name: 'wheelchair', label: 'Wheelchair', tags: ['accessibility', 'medical', 'disabled'] },
|
|
1622
|
+
{ name: 'crutch', label: 'Crutch', tags: ['medical', 'injury', 'support'] },
|
|
1623
|
+
{ name: 'smoking', label: 'Smoking', tags: ['cigarette', 'health', 'no-smoking'] },
|
|
1624
|
+
{ name: 'smoking-ban', label: 'No Smoking', tags: ['prohibited', 'health'] },
|
|
1625
|
+
// Education & Learning
|
|
1626
|
+
{ name: 'graduation-cap', label: 'Graduation', tags: ['education', 'degree', 'graduate'] },
|
|
1627
|
+
{ name: 'user-graduate', label: 'Graduate', tags: ['student', 'education', 'degree'] },
|
|
1628
|
+
{ name: 'chalkboard-user', label: 'Teacher', tags: ['education', 'teaching', 'classroom'] },
|
|
1629
|
+
{ name: 'school', label: 'School', tags: ['education', 'building', 'learning'] },
|
|
1630
|
+
{ name: 'book', label: 'Book', tags: ['reading', 'education', 'library'] },
|
|
1631
|
+
{ name: 'book-open', label: 'Open Book', tags: ['reading', 'study', 'learn'] },
|
|
1632
|
+
{ name: 'book-bookmark', label: 'Bookmark', tags: ['reading', 'save', 'mark'] },
|
|
1633
|
+
{ name: 'books', label: 'Books', tags: ['reading', 'library', 'education'] },
|
|
1634
|
+
{ name: 'bookmark', label: 'Bookmark', tags: ['save', 'mark', 'reading'] },
|
|
1635
|
+
{ name: 'pen', label: 'Pen', tags: ['write', 'draw', 'writing'] },
|
|
1636
|
+
{ name: 'pen-fancy', label: 'Fancy Pen', tags: ['write', 'signature'] },
|
|
1637
|
+
{ name: 'pen-nib', label: 'Pen Nib', tags: ['write', 'calligraphy'] },
|
|
1638
|
+
{ name: 'pencil', label: 'Pencil', tags: ['write', 'draw', 'edit'] },
|
|
1639
|
+
{ name: 'highlighter', label: 'Highlighter', tags: ['mark', 'emphasize', 'note'] },
|
|
1640
|
+
{ name: 'marker', label: 'Marker', tags: ['write', 'draw', 'mark'] },
|
|
1641
|
+
{ name: 'eraser', label: 'Eraser', tags: ['delete', 'remove', 'erase'] },
|
|
1642
|
+
{ name: 'ruler', label: 'Ruler', tags: ['measure', 'straight', 'tool'] },
|
|
1643
|
+
{ name: 'ruler-combined', label: 'Rulers', tags: ['measure', 'geometry'] },
|
|
1644
|
+
{ name: 'calculator', label: 'Calculator', tags: ['math', 'calculate', 'compute'] },
|
|
1645
|
+
{ name: 'square-root-variable', label: 'Math', tags: ['mathematics', 'equation'] },
|
|
1646
|
+
{ name: 'microscope', label: 'Microscope', tags: ['science', 'research', 'lab'] },
|
|
1647
|
+
{ name: 'flask', label: 'Flask', tags: ['science', 'chemistry', 'lab'] },
|
|
1648
|
+
{ name: 'atom', label: 'Atom', tags: ['science', 'physics', 'chemistry'] },
|
|
1649
|
+
{ name: 'dna', label: 'DNA', tags: ['science', 'biology', 'genetics'] },
|
|
1650
|
+
{ name: 'brain', label: 'Brain', tags: ['mind', 'think', 'intelligence'] },
|
|
1651
|
+
{ name: 'certificate', label: 'Certificate', tags: ['award', 'achievement', 'diploma'] },
|
|
1652
|
+
{ name: 'award', label: 'Award', tags: ['trophy', 'achievement', 'prize'] },
|
|
1653
|
+
{ name: 'medal', label: 'Medal', tags: ['award', 'achievement', 'winner'] },
|
|
1654
|
+
{ name: 'trophy', label: 'Trophy', tags: ['award', 'winner', 'achievement'] },
|
|
1655
|
+
// Food & Dining
|
|
1656
|
+
{ name: 'utensils', label: 'Utensils', tags: ['food', 'dining', 'restaurant'] },
|
|
1657
|
+
{ name: 'fork-knife', label: 'Fork Knife', tags: ['food', 'dining', 'restaurant'] },
|
|
1658
|
+
{ name: 'plate-utensils', label: 'Plate', tags: ['food', 'dining', 'meal'] },
|
|
1659
|
+
{ name: 'pizza-slice', label: 'Pizza', tags: ['food', 'slice', 'italian'] },
|
|
1660
|
+
{ name: 'burger', label: 'Burger', tags: ['food', 'fast', 'hamburger'] },
|
|
1661
|
+
{ name: 'hotdog', label: 'Hotdog', tags: ['food', 'fast'] },
|
|
1662
|
+
{ name: 'drumstick-bite', label: 'Chicken', tags: ['food', 'meat', 'poultry'] },
|
|
1663
|
+
{ name: 'ice-cream', label: 'Ice Cream', tags: ['dessert', 'sweet', 'frozen'] },
|
|
1664
|
+
{ name: 'mug-hot', label: 'Hot Beverage', tags: ['drink', 'coffee', 'tea'] },
|
|
1665
|
+
{ name: 'coffee', label: 'Coffee', tags: ['drink', 'beverage', 'cafe'] },
|
|
1666
|
+
{ name: 'mug-saucer', label: 'Coffee Cup', tags: ['drink', 'coffee', 'tea'] },
|
|
1667
|
+
{ name: 'glass-water', label: 'Water', tags: ['drink', 'beverage', 'glass'] },
|
|
1668
|
+
{ name: 'wine-glass', label: 'Wine', tags: ['drink', 'alcohol', 'beverage'] },
|
|
1669
|
+
{ name: 'champagne-glasses', label: 'Champagne', tags: ['celebrate', 'drink', 'toast'] },
|
|
1670
|
+
{ name: 'martini-glass', label: 'Martini', tags: ['drink', 'alcohol', 'cocktail'] },
|
|
1671
|
+
{ name: 'beer-mug-empty', label: 'Beer', tags: ['drink', 'alcohol', 'beverage'] },
|
|
1672
|
+
{ name: 'cake', label: 'Cake', tags: ['dessert', 'sweet', 'birthday'] },
|
|
1673
|
+
{ name: 'cake-candles', label: 'Birthday Cake', tags: ['birthday', 'celebration', 'party'] },
|
|
1674
|
+
{ name: 'cookie', label: 'Cookie', tags: ['food', 'dessert', 'sweet'] },
|
|
1675
|
+
{ name: 'candy-cane', label: 'Candy Cane', tags: ['candy', 'sweet', 'christmas'] },
|
|
1676
|
+
{ name: 'apple-whole', label: 'Apple', tags: ['fruit', 'healthy', 'food'] },
|
|
1677
|
+
{ name: 'lemon', label: 'Lemon', tags: ['fruit', 'citrus', 'food'] },
|
|
1678
|
+
{ name: 'carrot', label: 'Carrot', tags: ['vegetable', 'healthy', 'food'] },
|
|
1679
|
+
{ name: 'pepper-hot', label: 'Pepper', tags: ['spicy', 'food', 'hot'] },
|
|
1680
|
+
// Sports & Recreation
|
|
1681
|
+
{ name: 'football', label: 'Football', tags: ['sport', 'soccer', 'game'] },
|
|
1682
|
+
{ name: 'futbol', label: 'Soccer Ball', tags: ['sport', 'football', 'ball'] },
|
|
1683
|
+
{ name: 'basketball', label: 'Basketball', tags: ['sport', 'ball', 'game'] },
|
|
1684
|
+
{ name: 'baseball', label: 'Baseball', tags: ['sport', 'ball', 'game'] },
|
|
1685
|
+
{ name: 'baseball-bat-ball', label: 'Baseball Bat', tags: ['sport', 'baseball'] },
|
|
1686
|
+
{ name: 'volleyball', label: 'Volleyball', tags: ['sport', 'ball', 'game'] },
|
|
1687
|
+
{ name: 'table-tennis-paddle-ball', label: 'Table Tennis', tags: ['sport', 'ping-pong'] },
|
|
1688
|
+
{ name: 'golf-ball-tee', label: 'Golf', tags: ['sport', 'golf', 'game'] },
|
|
1689
|
+
{ name: 'hockey-puck', label: 'Hockey', tags: ['sport', 'ice', 'game'] },
|
|
1690
|
+
{ name: 'bowling-ball', label: 'Bowling', tags: ['sport', 'game', 'ball'] },
|
|
1691
|
+
{ name: 'person-running', label: 'Running', tags: ['sport', 'exercise', 'fitness'] },
|
|
1692
|
+
{ name: 'person-biking', label: 'Biking', tags: ['sport', 'exercise', 'cycling'] },
|
|
1693
|
+
{ name: 'person-swimming', label: 'Swimming', tags: ['sport', 'water', 'exercise'] },
|
|
1694
|
+
{ name: 'person-skiing', label: 'Skiing', tags: ['sport', 'winter', 'snow'] },
|
|
1695
|
+
{ name: 'dumbbell', label: 'Dumbbell', tags: ['fitness', 'weight', 'gym'] },
|
|
1696
|
+
{ name: 'weight-hanging', label: 'Weight', tags: ['fitness', 'gym', 'exercise'] },
|
|
1697
|
+
{ name: 'heart', label: 'Heart', tags: ['health', 'fitness', 'cardio'] },
|
|
1698
|
+
{ name: 'stopwatch-20', label: 'Timer', tags: ['time', 'sport', 'track'] },
|
|
1699
|
+
// Weather & Nature
|
|
1700
|
+
{ name: 'sun', label: 'Sun', tags: ['weather', 'bright', 'sunny'] },
|
|
1701
|
+
{ name: 'moon', label: 'Moon', tags: ['night', 'dark', 'lunar'] },
|
|
1702
|
+
{ name: 'star', label: 'Star', tags: ['night', 'sky', 'favorite'] },
|
|
1703
|
+
{ name: 'cloud', label: 'Cloud', tags: ['weather', 'sky', 'cloudy'] },
|
|
1704
|
+
{ name: 'cloud-sun', label: 'Partly Cloudy', tags: ['weather', 'mixed'] },
|
|
1705
|
+
{ name: 'cloud-moon', label: 'Cloudy Night', tags: ['weather', 'night'] },
|
|
1706
|
+
{ name: 'cloud-rain', label: 'Rain', tags: ['weather', 'precipitation', 'rainy'] },
|
|
1707
|
+
{ name: 'cloud-showers-heavy', label: 'Heavy Rain', tags: ['weather', 'storm', 'rain'] },
|
|
1708
|
+
{ name: 'umbrella', label: 'Umbrella', tags: ['rain', 'weather', 'protection'] },
|
|
1709
|
+
{ name: 'snowflake', label: 'Snow', tags: ['weather', 'cold', 'winter'] },
|
|
1710
|
+
{ name: 'icicles', label: 'Icicles', tags: ['winter', 'cold', 'ice'] },
|
|
1711
|
+
{ name: 'temperature-high', label: 'Hot', tags: ['weather', 'temperature', 'heat'] },
|
|
1712
|
+
{ name: 'temperature-low', label: 'Cold', tags: ['weather', 'temperature', 'cool'] },
|
|
1713
|
+
{ name: 'bolt', label: 'Lightning', tags: ['weather', 'storm', 'thunder'] },
|
|
1714
|
+
{ name: 'bolt-lightning', label: 'Thunder', tags: ['weather', 'storm', 'lightning'] },
|
|
1715
|
+
{ name: 'wind', label: 'Wind', tags: ['weather', 'breeze', 'air'] },
|
|
1716
|
+
{ name: 'tornado', label: 'Tornado', tags: ['weather', 'storm', 'cyclone'] },
|
|
1717
|
+
{ name: 'water', label: 'Water', tags: ['nature', 'liquid', 'sea'] },
|
|
1718
|
+
{ name: 'droplet', label: 'Droplet', tags: ['water', 'liquid', 'drop'] },
|
|
1719
|
+
{ name: 'fire', label: 'Fire', tags: ['hot', 'burn', 'flame'] },
|
|
1720
|
+
{ name: 'fire-flame-curved', label: 'Flame', tags: ['fire', 'hot', 'burn'] },
|
|
1721
|
+
{ name: 'tree', label: 'Tree', tags: ['nature', 'plant', 'forest'] },
|
|
1722
|
+
{ name: 'seedling', label: 'Seedling', tags: ['plant', 'grow', 'nature'] },
|
|
1723
|
+
{ name: 'leaf', label: 'Leaf', tags: ['nature', 'plant', 'green'] },
|
|
1724
|
+
{ name: 'clover', label: 'Clover', tags: ['nature', 'plant', 'lucky'] },
|
|
1725
|
+
{ name: 'flower', label: 'Flower', tags: ['nature', 'plant', 'blossom'] },
|
|
1726
|
+
{ name: 'feather', label: 'Feather', tags: ['nature', 'bird', 'light'] },
|
|
1727
|
+
{ name: 'mountain', label: 'Mountain', tags: ['nature', 'landscape', 'peak'] },
|
|
1728
|
+
// Shopping & Commerce
|
|
1729
|
+
{ name: 'shopping-cart', label: 'Shopping Cart', tags: ['buy', 'purchase', 'shop'] },
|
|
1730
|
+
{ name: 'cart-plus', label: 'Add to Cart', tags: ['shopping', 'add', 'buy'] },
|
|
1731
|
+
{ name: 'cart-shopping', label: 'Cart', tags: ['shop', 'buy', 'store'] },
|
|
1732
|
+
{ name: 'bag-shopping', label: 'Shopping Bag', tags: ['buy', 'store', 'retail'] },
|
|
1733
|
+
{ name: 'basket-shopping', label: 'Basket', tags: ['shopping', 'buy', 'cart'] },
|
|
1734
|
+
{ name: 'store', label: 'Store', tags: ['shop', 'retail', 'business'] },
|
|
1735
|
+
{ name: 'shop', label: 'Shop', tags: ['store', 'retail', 'business'] },
|
|
1736
|
+
{ name: 'cash-register', label: 'Cash Register', tags: ['payment', 'checkout', 'pos'] },
|
|
1737
|
+
{ name: 'tags', label: 'Tags', tags: ['price', 'label', 'sale'] },
|
|
1738
|
+
{ name: 'tag', label: 'Tag', tags: ['price', 'label', 'sale'] },
|
|
1739
|
+
{ name: 'barcode', label: 'Barcode', tags: ['scan', 'product', 'price'] },
|
|
1740
|
+
{ name: 'percent', label: 'Percent', tags: ['discount', 'sale', 'offer'] },
|
|
1741
|
+
{ name: 'gift', label: 'Gift', tags: ['present', 'surprise', 'celebration'] },
|
|
1742
|
+
{ name: 'gifts', label: 'Gifts', tags: ['presents', 'celebration'] },
|
|
1743
|
+
{ name: 'box', label: 'Box', tags: ['package', 'container', 'shipping'] },
|
|
1744
|
+
{ name: 'box-open', label: 'Open Box', tags: ['unpack', 'delivery', 'package'] },
|
|
1745
|
+
{ name: 'boxes-stacked', label: 'Boxes', tags: ['inventory', 'storage', 'warehouse'] },
|
|
1746
|
+
// Security & Safety
|
|
1747
|
+
{ name: 'eye', label: 'Eye', tags: ['view', 'watch', 'visible'] },
|
|
1748
|
+
{ name: 'eye-slash', label: 'Hide', tags: ['hidden', 'invisible', 'password'] },
|
|
1749
|
+
{ name: 'eye-low-vision', label: 'Low Vision', tags: ['accessibility', 'vision'] },
|
|
1750
|
+
{ name: 'user-secret', label: 'Secret User', tags: ['anonymous', 'hidden', 'spy'] },
|
|
1751
|
+
{ name: 'fingerprint', label: 'Fingerprint', tags: ['biometric', 'identity', 'security'] },
|
|
1752
|
+
{ name: 'id-card', label: 'ID Card', tags: ['identity', 'badge', 'credential'] },
|
|
1753
|
+
{ name: 'id-badge', label: 'Badge', tags: ['identity', 'credential', 'staff'] },
|
|
1754
|
+
{ name: 'fire', label: 'Fire', tags: ['hot', 'burn', 'danger'] },
|
|
1755
|
+
{ name: 'fire-extinguisher', label: 'Fire Extinguisher', tags: ['safety', 'emergency'] },
|
|
1756
|
+
{ name: 'triangle-exclamation', label: 'Warning', tags: ['alert', 'caution', 'danger'] },
|
|
1757
|
+
{ name: 'exclamation', label: 'Exclamation', tags: ['alert', 'important', 'warning'] },
|
|
1758
|
+
{ name: 'circle-exclamation', label: 'Alert', tags: ['warning', 'important'] },
|
|
1759
|
+
{ name: 'ban', label: 'Ban', tags: ['prohibited', 'forbidden', 'stop'] },
|
|
1760
|
+
{ name: 'circle-radiation', label: 'Radiation', tags: ['danger', 'hazard', 'warning'] },
|
|
1761
|
+
{ name: 'skull-crossbones', label: 'Danger', tags: ['hazard', 'poison', 'warning'] },
|
|
1762
|
+
{ name: 'biohazard', label: 'Biohazard', tags: ['danger', 'hazard', 'warning'] },
|
|
1763
|
+
// Miscellaneous
|
|
1764
|
+
{ name: 'circle', label: 'Circle', tags: ['shape', 'round', 'dot'] },
|
|
1765
|
+
{ name: 'square', label: 'Square', tags: ['shape', 'box'] },
|
|
1766
|
+
{ name: 'square-full', label: 'Full Square', tags: ['shape', 'filled'] },
|
|
1767
|
+
{ name: 'circle-dot', label: 'Dot', tags: ['point', 'marker', 'bullet'] },
|
|
1768
|
+
{ name: 'question', label: 'Question', tags: ['help', 'ask', 'faq'] },
|
|
1769
|
+
{ name: 'circle-question', label: 'Help', tags: ['question', 'support', 'info'] },
|
|
1770
|
+
{ name: 'circle-info', label: 'Info', tags: ['information', 'details', 'about'] },
|
|
1771
|
+
{ name: 'info', label: 'Information', tags: ['info', 'details', 'help'] },
|
|
1772
|
+
{ name: 'lightbulb', label: 'Lightbulb', tags: ['idea', 'bright', 'innovation'] },
|
|
1773
|
+
{ name: 'bolt', label: 'Bolt', tags: ['lightning', 'fast', 'power'] },
|
|
1774
|
+
{ name: 'wand-magic', label: 'Magic Wand', tags: ['magic', 'wizard', 'sparkle'] },
|
|
1775
|
+
{ name: 'wand-magic-sparkles', label: 'Magic', tags: ['wizard', 'sparkle', 'enchant'] },
|
|
1776
|
+
{ name: 'puzzle-piece', label: 'Puzzle', tags: ['piece', 'solve', 'game'] },
|
|
1777
|
+
{ name: 'gamepad', label: 'Gamepad', tags: ['gaming', 'controller', 'play'] },
|
|
1778
|
+
{ name: 'dice', label: 'Dice', tags: ['game', 'random', 'chance'] },
|
|
1779
|
+
{ name: 'dice-d20', label: 'D20 Dice', tags: ['game', 'tabletop', 'rpg'] },
|
|
1780
|
+
{ name: 'chess', label: 'Chess', tags: ['game', 'strategy', 'board'] },
|
|
1781
|
+
{ name: 'spade', label: 'Spade', tags: ['cards', 'game', 'suit'] },
|
|
1782
|
+
{ name: 'heart', label: 'Heart Card', tags: ['cards', 'game', 'suit'] },
|
|
1783
|
+
{ name: 'diamond', label: 'Diamond', tags: ['cards', 'game', 'suit'] },
|
|
1784
|
+
{ name: 'club', label: 'Club', tags: ['cards', 'game', 'suit'] },
|
|
1785
|
+
{ name: 'palette', label: 'Palette', tags: ['color', 'art', 'paint'] },
|
|
1786
|
+
{ name: 'brush', label: 'Brush', tags: ['paint', 'art', 'draw'] },
|
|
1787
|
+
{ name: 'paintbrush', label: 'Paintbrush', tags: ['art', 'paint', 'draw'] },
|
|
1788
|
+
{ name: 'scissors', label: 'Scissors', tags: ['cut', 'trim', 'tool'] },
|
|
1789
|
+
{ name: 'crown', label: 'Crown', tags: ['king', 'royal', 'premium'] },
|
|
1790
|
+
{ name: 'gem', label: 'Gem', tags: ['diamond', 'jewel', 'precious'] },
|
|
1791
|
+
{ name: 'ring', label: 'Ring', tags: ['jewelry', 'wedding', 'engagement'] },
|
|
1792
|
+
{ name: 'mug-hot', label: 'Hot Drink', tags: ['coffee', 'tea', 'beverage'] },
|
|
1793
|
+
{ name: 'battery-full', label: 'Battery Full', tags: ['power', 'charge', 'energy'] },
|
|
1794
|
+
{ name: 'battery-half', label: 'Battery Half', tags: ['power', 'charge'] },
|
|
1795
|
+
{ name: 'battery-empty', label: 'Battery Empty', tags: ['power', 'low', 'charge'] },
|
|
1796
|
+
{ name: 'plug', label: 'Plug', tags: ['power', 'electricity', 'connect'] },
|
|
1797
|
+
{ name: 'magnet', label: 'Magnet', tags: ['attract', 'magnetic', 'pull'] },
|
|
1798
|
+
{ name: 'compass-drafting', label: 'Drafting Compass', tags: ['geometry', 'draw', 'circle'] },
|
|
1799
|
+
{ name: 'rotate', label: 'Rotate', tags: ['spin', 'turn', 'refresh'] },
|
|
1800
|
+
{ name: 'infinity', label: 'Infinity', tags: ['unlimited', 'endless', 'loop'] },
|
|
1801
|
+
];
|
|
1802
|
+
//#endregion
|
|
1803
|
+
//#region ---- Default Providers ----
|
|
1804
|
+
/**
|
|
1805
|
+
* Default icon provider that provides the base set of FontAwesome icons.
|
|
1806
|
+
*/
|
|
1807
|
+
class AXPIconProviderDefault extends AXPIconProvider {
|
|
1808
|
+
async provide() {
|
|
1809
|
+
return DEFAULT_ICONS;
|
|
1810
|
+
}
|
|
1811
|
+
}
|
|
1812
|
+
/**
|
|
1813
|
+
* Default icon style provider that provides the base set of FontAwesome styles.
|
|
1814
|
+
*/
|
|
1815
|
+
class AXPIconStyleProviderDefault extends AXPIconStyleProvider {
|
|
1816
|
+
async provide() {
|
|
1817
|
+
return DEFAULT_ICON_STYLES;
|
|
1818
|
+
}
|
|
1819
|
+
}
|
|
1820
|
+
//#endregion
|
|
1821
|
+
|
|
1822
|
+
//#region ---- Provider Functions ----
|
|
1823
|
+
/**
|
|
1824
|
+
* Provides the default icon provider to the application.
|
|
1825
|
+
* This should be registered in your app module or config.
|
|
1826
|
+
*/
|
|
1827
|
+
function provideDefaultIconProvider() {
|
|
1828
|
+
return {
|
|
1829
|
+
provide: AXP_ICON_PROVIDER,
|
|
1830
|
+
useClass: AXPIconProviderDefault,
|
|
1831
|
+
multi: true,
|
|
1832
|
+
};
|
|
1833
|
+
}
|
|
1834
|
+
/**
|
|
1835
|
+
* Provides the default icon style provider to the application.
|
|
1836
|
+
* This should be registered in your app module or config.
|
|
1837
|
+
*/
|
|
1838
|
+
function provideDefaultIconStyleProvider() {
|
|
1839
|
+
return {
|
|
1840
|
+
provide: AXP_ICON_STYLE_PROVIDER,
|
|
1841
|
+
useClass: AXPIconStyleProviderDefault,
|
|
1842
|
+
multi: true,
|
|
1843
|
+
};
|
|
1844
|
+
}
|
|
1845
|
+
/**
|
|
1846
|
+
* Provides both default icon and style providers to the application.
|
|
1847
|
+
* This is a convenience function that combines provideDefaultIconProvider() and provideDefaultIconStyleProvider().
|
|
1848
|
+
*/
|
|
1849
|
+
function provideDefaultIconChooser() {
|
|
1850
|
+
return [provideDefaultIconProvider(), provideDefaultIconStyleProvider()];
|
|
1851
|
+
}
|
|
1852
|
+
/**
|
|
1853
|
+
* Provides a custom icon provider to the application.
|
|
1854
|
+
* This ADDS additional icons alongside the default icon set.
|
|
1855
|
+
*
|
|
1856
|
+
* @param providerClass - The custom icon provider class
|
|
1857
|
+
*
|
|
1858
|
+
* @example
|
|
1859
|
+
* ```typescript
|
|
1860
|
+
* class MyCustomIconProvider extends AXPIconProvider {
|
|
1861
|
+
* async provide(): Promise<AXPFontAwesomeIcon[]> {
|
|
1862
|
+
* return [
|
|
1863
|
+
* { name: 'custom-icon', label: 'Custom Icon' }
|
|
1864
|
+
* ];
|
|
1865
|
+
* }
|
|
1866
|
+
* }
|
|
1867
|
+
*
|
|
1868
|
+
* export const appConfig: ApplicationConfig = {
|
|
1869
|
+
* providers: [
|
|
1870
|
+
* provideCustomIconProvider(MyCustomIconProvider),
|
|
1871
|
+
* ]
|
|
1872
|
+
* };
|
|
1873
|
+
* ```
|
|
1874
|
+
*/
|
|
1875
|
+
function provideCustomIconProvider(providerClass) {
|
|
1876
|
+
return {
|
|
1877
|
+
provide: AXP_ICON_PROVIDER,
|
|
1878
|
+
useClass: providerClass,
|
|
1879
|
+
multi: true,
|
|
1880
|
+
};
|
|
1881
|
+
}
|
|
1882
|
+
/**
|
|
1883
|
+
* Provides a custom icon style provider to the application.
|
|
1884
|
+
* This ADDS additional icon styles alongside the default styles.
|
|
1885
|
+
*
|
|
1886
|
+
* @param providerClass - The custom icon style provider class
|
|
1887
|
+
*
|
|
1888
|
+
* @example
|
|
1889
|
+
* ```typescript
|
|
1890
|
+
* class MyCustomIconStyleProvider extends AXPIconStyleProvider {
|
|
1891
|
+
* async provide(): Promise<AXPFontAwesomeIconStyle[]> {
|
|
1892
|
+
* return [
|
|
1893
|
+
* { name: 'fa-custom', label: 'Custom' }
|
|
1894
|
+
* ];
|
|
1895
|
+
* }
|
|
1896
|
+
* }
|
|
1897
|
+
*
|
|
1898
|
+
* export const appConfig: ApplicationConfig = {
|
|
1899
|
+
* providers: [
|
|
1900
|
+
* provideCustomIconStyleProvider(MyCustomIconStyleProvider),
|
|
1901
|
+
* ]
|
|
1902
|
+
* };
|
|
1903
|
+
* ```
|
|
1904
|
+
*/
|
|
1905
|
+
function provideCustomIconStyleProvider(providerClass) {
|
|
1906
|
+
return {
|
|
1907
|
+
provide: AXP_ICON_STYLE_PROVIDER,
|
|
1908
|
+
useClass: providerClass,
|
|
1909
|
+
multi: true,
|
|
1910
|
+
};
|
|
1911
|
+
}
|
|
1912
|
+
//#endregion
|
|
1913
|
+
|
|
1511
1914
|
class AXPMenuOrientationChooserWidgetComponent extends AXPValueWidgetComponent {
|
|
1512
1915
|
constructor() {
|
|
1513
1916
|
super(...arguments);
|
|
@@ -1536,7 +1939,7 @@ class AXPMenuOrientationChooserWidgetComponent extends AXPValueWidgetComponent {
|
|
|
1536
1939
|
<span>{{ '@layout:menu-modes.' + orientation.id | translate | async }}</span>
|
|
1537
1940
|
</div>
|
|
1538
1941
|
}
|
|
1539
|
-
`, isInline: true, styles: [":host{display:flex;flex-direction:row;flex-wrap:wrap;gap:.5rem}:host>div{display:flex;cursor:pointer;flex-direction:row;align-items:center;justify-content:space-between;gap:.5rem;border-radius:.5rem;padding:.5rem 1rem;background-color:rgb(var(--ax-sys-color-light-surface));color:rgb(var(--ax-sys-color-on-light-surface));border-color:rgb(var(--ax-sys-color-border-light-surface))}:host>div:is(.ax-dark *){background-color:rgb(var(--ax-sys-color-surface));color:rgb(var(--ax-sys-color-on-surface));border-color:rgb(var(--ax-sys-color-border-surface))}:host>div{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.2s;animation-duration:.2s}:host>div:hover{background-color:rgb(var(--ax-sys-color-dark-surface));color:rgb(var(--ax-sys-color-on-dark-surface));border-color:rgb(var(--ax-sys-color-border-dark-surface))}:host>div.--selected{background-color:rgb(var(--ax-sys-color-primary-lighter-surface));color:rgb(var(--ax-sys-color-on-primary-lighter-surface));border-color:rgb(var(--ax-sys-color-border-primary-lighter-surface))}:host>div>div{display:flex;align-items:center;justify-content:center}:host>div>div i{font-size:1.25rem;line-height:1.75rem}:host>div>span{font-size:.875rem;line-height:1.25rem;font-weight:600;line-height:1.625}:host>div{padding-top:.25rem!important;padding-bottom:.25rem!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: AXSelectionCdkModule }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type:
|
|
1942
|
+
`, isInline: true, styles: [":host{display:flex;flex-direction:row;flex-wrap:wrap;gap:.5rem}:host>div{display:flex;cursor:pointer;flex-direction:row;align-items:center;justify-content:space-between;gap:.5rem;border-radius:.5rem;padding:.5rem 1rem;background-color:rgb(var(--ax-sys-color-light-surface));color:rgb(var(--ax-sys-color-on-light-surface));border-color:rgb(var(--ax-sys-color-border-light-surface))}:host>div:is(.ax-dark *){background-color:rgb(var(--ax-sys-color-surface));color:rgb(var(--ax-sys-color-on-surface));border-color:rgb(var(--ax-sys-color-border-surface))}:host>div{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.2s;animation-duration:.2s}:host>div:hover{background-color:rgb(var(--ax-sys-color-dark-surface));color:rgb(var(--ax-sys-color-on-dark-surface));border-color:rgb(var(--ax-sys-color-border-dark-surface))}:host>div.--selected{background-color:rgb(var(--ax-sys-color-primary-lighter-surface));color:rgb(var(--ax-sys-color-on-primary-lighter-surface));border-color:rgb(var(--ax-sys-color-border-primary-lighter-surface))}:host>div>div{display:flex;align-items:center;justify-content:center}:host>div>div i{font-size:1.25rem;line-height:1.75rem}:host>div>span{font-size:.875rem;line-height:1.25rem;font-weight:600;line-height:1.625}:host>div{padding-top:.25rem!important;padding-bottom:.25rem!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: AXSelectionCdkModule }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
1540
1943
|
}
|
|
1541
1944
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: AXPMenuOrientationChooserWidgetComponent, decorators: [{
|
|
1542
1945
|
type: Component,
|
|
@@ -1604,7 +2007,7 @@ class AXPThemeModeChooserWidgetComponent extends AXPValueWidgetComponent {
|
|
|
1604
2007
|
<span>{{ '@layout:theme-modes.' + mode.id | translate | async }}</span>
|
|
1605
2008
|
</div>
|
|
1606
2009
|
}
|
|
1607
|
-
`, isInline: true, styles: [":host{display:flex;flex-direction:row;flex-wrap:wrap;gap:.5rem}:host>div{display:flex;cursor:pointer;flex-direction:row;align-items:center;justify-content:space-between;gap:.5rem;border-radius:.5rem;padding:.5rem 1rem;background-color:rgb(var(--ax-sys-color-light-surface));color:rgb(var(--ax-sys-color-on-light-surface));border-color:rgb(var(--ax-sys-color-border-light-surface))}:host>div:is(.ax-dark *){background-color:rgb(var(--ax-sys-color-surface));color:rgb(var(--ax-sys-color-on-surface));border-color:rgb(var(--ax-sys-color-border-surface))}:host>div{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.2s;animation-duration:.2s}:host>div:hover{background-color:rgb(var(--ax-sys-color-dark-surface));color:rgb(var(--ax-sys-color-on-dark-surface));border-color:rgb(var(--ax-sys-color-border-dark-surface))}:host>div.--selected{background-color:rgb(var(--ax-sys-color-primary-lighter-surface));color:rgb(var(--ax-sys-color-on-primary-lighter-surface));border-color:rgb(var(--ax-sys-color-border-primary-lighter-surface))}:host>div>div{display:flex;align-items:center;justify-content:center}:host>div>div i{font-size:1.25rem;line-height:1.75rem}:host>div>span{font-size:.875rem;line-height:1.25rem;font-weight:600;line-height:1.625}:host>div{padding-top:.25rem!important;padding-bottom:.25rem!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: AXSelectionCdkModule }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type:
|
|
2010
|
+
`, isInline: true, styles: [":host{display:flex;flex-direction:row;flex-wrap:wrap;gap:.5rem}:host>div{display:flex;cursor:pointer;flex-direction:row;align-items:center;justify-content:space-between;gap:.5rem;border-radius:.5rem;padding:.5rem 1rem;background-color:rgb(var(--ax-sys-color-light-surface));color:rgb(var(--ax-sys-color-on-light-surface));border-color:rgb(var(--ax-sys-color-border-light-surface))}:host>div:is(.ax-dark *){background-color:rgb(var(--ax-sys-color-surface));color:rgb(var(--ax-sys-color-on-surface));border-color:rgb(var(--ax-sys-color-border-surface))}:host>div{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.2s;animation-duration:.2s}:host>div:hover{background-color:rgb(var(--ax-sys-color-dark-surface));color:rgb(var(--ax-sys-color-on-dark-surface));border-color:rgb(var(--ax-sys-color-border-dark-surface))}:host>div.--selected{background-color:rgb(var(--ax-sys-color-primary-lighter-surface));color:rgb(var(--ax-sys-color-on-primary-lighter-surface));border-color:rgb(var(--ax-sys-color-border-primary-lighter-surface))}:host>div>div{display:flex;align-items:center;justify-content:center}:host>div>div i{font-size:1.25rem;line-height:1.75rem}:host>div>span{font-size:.875rem;line-height:1.25rem;font-weight:600;line-height:1.625}:host>div{padding-top:.25rem!important;padding-bottom:.25rem!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: AXSelectionCdkModule }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
1608
2011
|
}
|
|
1609
2012
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: AXPThemeModeChooserWidgetComponent, decorators: [{
|
|
1610
2013
|
type: Component,
|
|
@@ -1732,7 +2135,7 @@ class AXPThemesSharedModule {
|
|
|
1732
2135
|
});
|
|
1733
2136
|
}
|
|
1734
2137
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: AXPThemesSharedModule, deps: [{ token: i1$2.AXPAppStartUpService }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
1735
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.4", ngImport: i0, type: AXPThemesSharedModule, imports: [i2$
|
|
2138
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.4", ngImport: i0, type: AXPThemesSharedModule, imports: [i2$3.AXPComponentSlotModule, i3$1.AXPWidgetCoreModule] }); }
|
|
1736
2139
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: AXPThemesSharedModule, providers: [
|
|
1737
2140
|
{
|
|
1738
2141
|
provide: AXP_SETTING_DEFINITION_PROVIDER,
|
|
@@ -1743,6 +2146,7 @@ class AXPThemesSharedModule {
|
|
|
1743
2146
|
},
|
|
1744
2147
|
multi: true,
|
|
1745
2148
|
},
|
|
2149
|
+
...provideDefaultIconChooser(),
|
|
1746
2150
|
], imports: [AXPComponentSlotModule.forRoot({
|
|
1747
2151
|
'root-header-end': [
|
|
1748
2152
|
{
|
|
@@ -1801,6 +2205,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.4", ngImpor
|
|
|
1801
2205
|
},
|
|
1802
2206
|
multi: true,
|
|
1803
2207
|
},
|
|
2208
|
+
...provideDefaultIconChooser(),
|
|
1804
2209
|
],
|
|
1805
2210
|
}]
|
|
1806
2211
|
}], ctorParameters: () => [{ type: i1$2.AXPAppStartUpService }, { type: i0.Injector }] });
|