@ng-nest/ui 20.0.7 → 20.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/auto-complete/index.d.ts +30 -5
- package/avatar/index.d.ts +64 -2
- package/base-form/index.d.ts +3 -3
- package/bubble/index.d.ts +170 -0
- package/cascade/index.d.ts +30 -5
- package/checkbox/index.d.ts +4 -4
- package/color-picker/index.d.ts +31 -5
- package/core/index.d.ts +48 -4
- package/date-picker/index.d.ts +53 -8
- package/fesm2022/ng-nest-ui-affix.mjs +12 -12
- package/fesm2022/ng-nest-ui-affix.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-alert.mjs +35 -35
- package/fesm2022/ng-nest-ui-alert.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-anchor.mjs +31 -31
- package/fesm2022/ng-nest-ui-anchor.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-api.mjs +7 -7
- package/fesm2022/ng-nest-ui-api.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-auto-complete.mjs +82 -72
- package/fesm2022/ng-nest-ui-auto-complete.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-avatar.mjs +43 -31
- package/fesm2022/ng-nest-ui-avatar.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-back-top.mjs +18 -18
- package/fesm2022/ng-nest-ui-back-top.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-badge.mjs +23 -23
- package/fesm2022/ng-nest-ui-badge.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-base-form.mjs +45 -45
- package/fesm2022/ng-nest-ui-base-form.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-bubble.mjs +350 -0
- package/fesm2022/ng-nest-ui-bubble.mjs.map +1 -0
- package/fesm2022/ng-nest-ui-button.mjs +42 -42
- package/fesm2022/ng-nest-ui-button.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-calendar.mjs +20 -20
- package/fesm2022/ng-nest-ui-calendar.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-card.mjs +15 -15
- package/fesm2022/ng-nest-ui-card.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-carousel.mjs +46 -46
- package/fesm2022/ng-nest-ui-carousel.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-cascade.mjs +86 -76
- package/fesm2022/ng-nest-ui-cascade.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-checkbox.mjs +39 -39
- package/fesm2022/ng-nest-ui-checkbox.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-collapse.mjs +31 -31
- package/fesm2022/ng-nest-ui-collapse.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-color-picker.mjs +91 -72
- package/fesm2022/ng-nest-ui-color-picker.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-color.mjs +16 -16
- package/fesm2022/ng-nest-ui-color.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-comment.mjs +21 -21
- package/fesm2022/ng-nest-ui-comment.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-container.mjs +37 -37
- package/fesm2022/ng-nest-ui-container.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-core.mjs +41 -22
- package/fesm2022/ng-nest-ui-core.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-crumb.mjs +13 -13
- package/fesm2022/ng-nest-ui-crumb.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-date-picker.mjs +273 -253
- package/fesm2022/ng-nest-ui-date-picker.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-description.mjs +31 -31
- package/fesm2022/ng-nest-ui-description.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-dialog.mjs +81 -81
- package/fesm2022/ng-nest-ui-dialog.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-doc.mjs +7 -7
- package/fesm2022/ng-nest-ui-doc.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-drag.mjs +10 -10
- package/fesm2022/ng-nest-ui-drag.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-drawer.mjs +42 -42
- package/fesm2022/ng-nest-ui-drawer.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-dropdown.mjs +49 -49
- package/fesm2022/ng-nest-ui-dropdown.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-empty.mjs +12 -12
- package/fesm2022/ng-nest-ui-empty.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-examples.mjs +7 -7
- package/fesm2022/ng-nest-ui-examples.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-find.mjs +79 -77
- package/fesm2022/ng-nest-ui-find.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-form.mjs +33 -33
- package/fesm2022/ng-nest-ui-form.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-highlight.mjs +20 -20
- package/fesm2022/ng-nest-ui-highlight.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-i18n.mjs +15 -15
- package/fesm2022/ng-nest-ui-i18n.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-icon.mjs +21 -21
- package/fesm2022/ng-nest-ui-icon.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-image.mjs +39 -39
- package/fesm2022/ng-nest-ui-image.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-inner.mjs +11 -11
- package/fesm2022/ng-nest-ui-inner.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-input-number.mjs +42 -42
- package/fesm2022/ng-nest-ui-input-number.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-input.mjs +103 -82
- package/fesm2022/ng-nest-ui-input.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-keyword.mjs +15 -15
- package/fesm2022/ng-nest-ui-keyword.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-layout.mjs +31 -31
- package/fesm2022/ng-nest-ui-layout.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-link.mjs +18 -18
- package/fesm2022/ng-nest-ui-link.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-list.mjs +80 -80
- package/fesm2022/ng-nest-ui-list.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-loading.mjs +28 -23
- package/fesm2022/ng-nest-ui-loading.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-menu.mjs +45 -45
- package/fesm2022/ng-nest-ui-menu.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-message-box.mjs +10 -10
- package/fesm2022/ng-nest-ui-message-box.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-message.mjs +10 -10
- package/fesm2022/ng-nest-ui-message.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-notification.mjs +10 -10
- package/fesm2022/ng-nest-ui-notification.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-outlet.mjs +9 -9
- package/fesm2022/ng-nest-ui-outlet.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-page-header.mjs +15 -15
- package/fesm2022/ng-nest-ui-page-header.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-pagination.mjs +53 -53
- package/fesm2022/ng-nest-ui-pagination.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-pattern.mjs +7 -7
- package/fesm2022/ng-nest-ui-pattern.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-popconfirm.mjs +27 -27
- package/fesm2022/ng-nest-ui-popconfirm.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-popover.mjs +38 -38
- package/fesm2022/ng-nest-ui-popover.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-portal.mjs +7 -7
- package/fesm2022/ng-nest-ui-portal.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-progress.mjs +38 -38
- package/fesm2022/ng-nest-ui-progress.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-radio.mjs +36 -36
- package/fesm2022/ng-nest-ui-radio.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-rate.mjs +30 -30
- package/fesm2022/ng-nest-ui-rate.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-resizable.mjs +16 -16
- package/fesm2022/ng-nest-ui-resizable.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-result.mjs +16 -16
- package/fesm2022/ng-nest-ui-result.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-ripple.mjs +13 -13
- package/fesm2022/ng-nest-ui-ripple.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-scrollable.mjs +102 -19
- package/fesm2022/ng-nest-ui-scrollable.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-select.mjs +121 -111
- package/fesm2022/ng-nest-ui-select.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-skeleton.mjs +15 -15
- package/fesm2022/ng-nest-ui-skeleton.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-slider-select.mjs +54 -54
- package/fesm2022/ng-nest-ui-slider-select.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-slider.mjs +39 -39
- package/fesm2022/ng-nest-ui-slider.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-statistic.mjs +30 -30
- package/fesm2022/ng-nest-ui-statistic.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-steps.mjs +19 -19
- package/fesm2022/ng-nest-ui-steps.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-switch.mjs +26 -26
- package/fesm2022/ng-nest-ui-switch.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-table-view.mjs +490 -242
- package/fesm2022/ng-nest-ui-table-view.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-table.mjs +221 -221
- package/fesm2022/ng-nest-ui-table.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-tabs.mjs +58 -58
- package/fesm2022/ng-nest-ui-tabs.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-tag.mjs +22 -22
- package/fesm2022/ng-nest-ui-tag.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-text-retract.mjs +15 -15
- package/fesm2022/ng-nest-ui-text-retract.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-textarea.mjs +41 -41
- package/fesm2022/ng-nest-ui-textarea.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-theme.mjs +23 -23
- package/fesm2022/ng-nest-ui-theme.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-time-ago.mjs +7 -7
- package/fesm2022/ng-nest-ui-time-ago.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-time-picker.mjs +104 -94
- package/fesm2022/ng-nest-ui-time-picker.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-time-range.mjs +7 -7
- package/fesm2022/ng-nest-ui-time-range.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-timeline.mjs +15 -15
- package/fesm2022/ng-nest-ui-timeline.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-tooltip.mjs +38 -38
- package/fesm2022/ng-nest-ui-tooltip.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-transfer.mjs +40 -40
- package/fesm2022/ng-nest-ui-transfer.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-tree-file.mjs +28 -28
- package/fesm2022/ng-nest-ui-tree-file.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-tree-select.mjs +126 -116
- package/fesm2022/ng-nest-ui-tree-select.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-tree.mjs +107 -107
- package/fesm2022/ng-nest-ui-tree.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-typography.mjs +13 -13
- package/fesm2022/ng-nest-ui-typography.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-upload.mjs +37 -37
- package/fesm2022/ng-nest-ui-upload.mjs.map +1 -1
- package/fesm2022/ng-nest-ui.mjs +1 -0
- package/fesm2022/ng-nest-ui.mjs.map +1 -1
- package/find/index.d.ts +5 -5
- package/form/index.d.ts +1 -1
- package/index.d.ts +1 -0
- package/input/index.d.ts +32 -5
- package/input-number/index.d.ts +5 -5
- package/list/index.d.ts +2 -2
- package/loading/index.d.ts +6 -1
- package/package.json +60 -56
- package/radio/index.d.ts +4 -4
- package/rate/index.d.ts +5 -5
- package/scrollable/index.d.ts +15 -7
- package/select/index.d.ts +35 -5
- package/slider-select/index.d.ts +3 -3
- package/switch/index.d.ts +3 -3
- package/table-view/index.d.ts +121 -79
- package/textarea/index.d.ts +3 -3
- package/theme/index.d.ts +1 -1
- package/time-picker/index.d.ts +30 -5
- package/transfer/index.d.ts +1 -1
- package/tree-select/index.d.ts +30 -5
- package/upload/index.d.ts +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ng-nest-ui-auto-complete.mjs","sources":["../../../../lib/ng-nest/ui/auto-complete/auto-complete.property.ts","../../../../lib/ng-nest/ui/auto-complete/auto-complete-portal.component.ts","../../../../lib/ng-nest/ui/auto-complete/auto-complete-portal.component.html","../../../../lib/ng-nest/ui/auto-complete/auto-complete.component.ts","../../../../lib/ng-nest/ui/auto-complete/auto-complete.component.html","../../../../lib/ng-nest/ui/auto-complete/auto-complete.module.ts","../../../../lib/ng-nest/ui/auto-complete/ng-nest-ui-auto-complete.ts"],"sourcesContent":["import {\r\n XParentIdentityProperty,\r\n XData,\r\n XPositionTopBottom,\r\n XSize,\r\n XBoolean,\r\n XAlign,\r\n XJustify,\r\n XDirection,\r\n XTemplate,\r\n XToNumber,\r\n XNumber,\r\n XToBoolean,\r\n XToCssPixelValue,\r\n XVariant\r\n} from '@ng-nest/ui/core';\r\nimport { Component, TemplateRef, input, model, output } from '@angular/core';\r\nimport { XFormControlFunction, XFormOption } from '@ng-nest/ui/base-form';\r\n\r\n/**\r\n * AutoComplete\r\n * @selector x-auto-complete\r\n * @decorator component\r\n */\r\nexport const XAutoCompletePrefix = 'x-auto-complete';\r\nconst X_AUTOCOMPLETE_CONFIG_NAME = 'autoComplete';\r\n\r\n/**\r\n * AutoComplete Property\r\n */\r\n@Component({ selector: `${XAutoCompletePrefix}-property`, template: '' })\r\nexport class XAutoCompleteProperty extends XFormControlFunction(X_AUTOCOMPLETE_CONFIG_NAME) {\r\n /**\r\n * @zh_CN 节点数据\r\n * @en_US Node data\r\n */\r\n readonly data = input<XData<XAutoCompleteNode>>([]);\r\n /**\r\n * @zh_CN 形态变体\r\n * @en_US Input variant\r\n */\r\n readonly variant = input<XAutoCompleteVariant>(this.config?.variant ?? 'outlined');\r\n /**\r\n * @zh_CN 输入延迟执行时间,ms\r\n * @en_US Enter a delay execution time, ms\r\n */\r\n readonly debounceTime = input<number, XNumber>(this.config?.debounceTime ?? 200, { transform: XToNumber });\r\n /**\r\n * @zh_CN 展示方位\r\n * @en_US Display position\r\n */\r\n readonly placement = input<XPositionTopBottom>(this.config?.placement ?? 'bottom');\r\n /**\r\n * @zh_CN 节点模板\r\n * @en_US Node template\r\n */\r\n readonly nodeTpl = input<TemplateRef<any>>();\r\n /**\r\n * @zh_CN 显示边框\r\n * @en_US Display Border\r\n */\r\n readonly bordered = input<boolean, XBoolean>(this.config?.bordered ?? true, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 下拉框的最大高度\r\n * @en_US The biggest height of the drop-down box\r\n */\r\n readonly portalMaxHeight = input<string, XNumber>(this.config?.portalMaxHeight ?? '12rem', {\r\n transform: XToCssPixelValue\r\n });\r\n /**\r\n * @zh_CN 下拉框的高度,启用虚拟滚动的时候必须设置一个高度\r\n * @en_US The biggest height of the drop-down box\r\n */\r\n readonly portalHeight = input<string, XNumber>('', {\r\n transform: XToCssPixelValue\r\n });\r\n /**\r\n * @zh_CN 下拉框的宽度\r\n * @en_US The width of the drop-down box\r\n */\r\n readonly portalWidth = input<string, XNumber>('', { transform: XToCssPixelValue });\r\n /**\r\n * @zh_CN 下拉框设置样式名\r\n * @en_US The style class name of the drop-down box\r\n */\r\n readonly portalClass = input<string | string[]>('');\r\n /**\r\n * @zh_CN 匹配区分大小写\r\n * @en_US Case-sensitive\r\n */\r\n readonly caseSensitive = input<boolean, XBoolean>(this.config?.caseSensitive ?? true, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 只能是选择的值\r\n * @en_US Can only be the value of choice\r\n */\r\n readonly onlySelect = input<boolean, XBoolean>(this.config?.onlySelect ?? false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 尺寸\r\n * @en_US Size\r\n */\r\n override readonly size = input<XSize>(this.config?.size ?? 'medium');\r\n /**\r\n * @zh_CN 输入框点击样式\r\n * @en_US Input pointer\r\n */\r\n override readonly pointer = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 标签\r\n * @en_US Label\r\n */\r\n override readonly label = input<string>('');\r\n /**\r\n * @zh_CN 标签宽度\r\n * @en_US Label width\r\n */\r\n override readonly labelWidth = input<string, XNumber>('', { transform: XToCssPixelValue });\r\n /**\r\n * @zh_CN 标签文字对齐方式\r\n * @en_US Label text alignment method\r\n */\r\n override readonly labelAlign = input<XAlign>('start');\r\n /**\r\n * @zh_CN flex 布局下的子元素水平排列方式\r\n * @en_US The level of sub-element level arrangement under flex layout\r\n */\r\n override readonly justify = input<XJustify>('start');\r\n /**\r\n * @zh_CN flex 布局下的子元素垂直排列方式\r\n * @en_US sub-element vertical arrangement method under flex layout\r\n */\r\n override readonly align = input<XAlign>('start');\r\n /**\r\n * @zh_CN flex 布局下的子元素排列方向\r\n * @en_US The direction of the sub-element arrangement under flex layout\r\n */\r\n override readonly direction = input<XDirection>('column');\r\n /**\r\n * @zh_CN 输入提示信息\r\n * @en_US Enter prompt information\r\n */\r\n override readonly placeholder = input<string | string[]>('');\r\n /**\r\n * @zh_CN 禁用\r\n * @en_US Disabled\r\n */\r\n override readonly disabled = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 必填\r\n * @en_US Required\r\n */\r\n override readonly required = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 只读\r\n * @en_US Readonly\r\n */\r\n override readonly readonly = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 值模板\r\n * @en_US Node template\r\n */\r\n override readonly valueTpl = input<TemplateRef<any>>();\r\n /**\r\n * @zh_CN 值模板参数\r\n * @en_US Node template\r\n */\r\n override readonly valueTplContext = input();\r\n /**\r\n * @zh_CN 前置标签\r\n * @en_US Before label\r\n */\r\n override readonly before = input<XTemplate>();\r\n /**\r\n * @zh_CN 后置标签\r\n * @en_US After label\r\n */\r\n override readonly after = input<XTemplate>();\r\n /**\r\n * @zh_CN 正则验证规则\r\n * @en_US Regular verification rules\r\n */\r\n override readonly pattern = input<RegExp | RegExp[] | any>(null);\r\n /**\r\n * @zh_CN 验证不通过提示文字\r\n * @en_US Verify not pass the prompt text\r\n */\r\n override readonly message = input<string | string[]>([]);\r\n /**\r\n * @zh_CN 激活状态\r\n * @en_US Activation state\r\n */\r\n override readonly active = model<boolean>(false);\r\n /**\r\n * @zh_CN 输入验证函数\r\n * @en_US Enter the verification function\r\n */\r\n override readonly inputValidator = input<(value: any) => boolean>();\r\n /**\r\n * @zh_CN 选择节点事件\r\n * @en_US Node click event\r\n */\r\n readonly nodeEmit = output<XAutoCompleteNode>();\r\n}\r\n\r\n/**\r\n * AutoComplete Option\r\n */\r\nexport interface XAutoCompleteOption extends XFormOption {\r\n /**\r\n * @zh_CN 节点数据\r\n * @en_US Node data\r\n */\r\n data?: XData<XAutoCompleteNode>;\r\n /**\r\n * @zh_CN 形态变体\r\n * @en_US Input variant\r\n */\r\n variant?: XAutoCompleteVariant;\r\n /**\r\n * @zh_CN 输入延迟执行时间,ms\r\n * @en_US Enter a delay execution time, ms\r\n */\r\n debounceTime?: number;\r\n /**\r\n * @zh_CN 展示方位\r\n * @en_US Display position\r\n */\r\n placement?: XPositionTopBottom;\r\n /**\r\n * @zh_CN 节点模板\r\n * @en_US Node template\r\n */\r\n nodeTpl?: TemplateRef<any>;\r\n /**\r\n * @zh_CN 显示边框\r\n * @en_US Display Border\r\n */\r\n bordered?: boolean;\r\n /**\r\n * @zh_CN 匹配区分大小写\r\n * @en_US Case-sensitive\r\n */\r\n caseSensitive?: boolean;\r\n /**\r\n * @zh_CN 只能是选择的值\r\n * @en_US Can only be the value of choice\r\n */\r\n onlySelect?: boolean;\r\n /**\r\n * @zh_CN 尺寸\r\n * @en_US Size\r\n */\r\n size?: XSize;\r\n /**\r\n * @zh_CN 输入框点击样式\r\n * @en_US Input pointer\r\n */\r\n pointer?: boolean;\r\n /**\r\n * @zh_CN 标签\r\n * @en_US Label\r\n */\r\n label?: string;\r\n /**\r\n * @zh_CN 标签宽度\r\n * @en_US Label width\r\n */\r\n labelWidth?: string;\r\n /**\r\n * @zh_CN 标签文字对齐方式\r\n * @en_US Label text alignment method\r\n */\r\n labelAlign?: XAlign;\r\n /**\r\n * @zh_CN flex 布局下的子元素水平排列方式\r\n * @en_US The level of sub-element level arrangement under flex layout\r\n */\r\n justify?: XJustify;\r\n /**\r\n * @zh_CN flex 布局下的子元素垂直排列方式\r\n * @en_US sub-element vertical arrangement method under flex layout\r\n */\r\n align?: XAlign;\r\n /**\r\n * @zh_CN flex 布局下的子元素排列方向\r\n * @en_US The direction of the sub-element arrangement under flex layout\r\n */\r\n direction?: XDirection;\r\n /**\r\n * @zh_CN 输入提示信息\r\n * @en_US Enter prompt information\r\n */\r\n placeholder?: string;\r\n /**\r\n * @zh_CN 禁用\r\n * @en_US Disabled\r\n */\r\n disabled?: boolean;\r\n /**\r\n * @zh_CN 必填\r\n * @en_US Required\r\n */\r\n required?: boolean;\r\n /**\r\n * @zh_CN 只读\r\n * @en_US Readonly\r\n */\r\n readonly?: boolean;\r\n /**\r\n * @zh_CN 值模板\r\n * @en_US Node template\r\n */\r\n valueTpl?: TemplateRef<any>;\r\n /**\r\n * @zh_CN 值模板参数\r\n * @en_US Node template\r\n */\r\n valueTplContext?: any;\r\n /**\r\n * @zh_CN 前置标签\r\n * @en_US Before label\r\n */\r\n before?: XTemplate;\r\n /**\r\n * @zh_CN 后置标签\r\n * @en_US After label\r\n */\r\n after?: XTemplate;\r\n /**\r\n * @zh_CN 正则验证规则\r\n * @en_US Regular verification rules\r\n */\r\n pattern?: RegExp | RegExp[];\r\n /**\r\n * @zh_CN 验证不通过提示文字\r\n * @en_US Verify not pass the prompt text\r\n */\r\n message?: string | string[];\r\n /**\r\n * @zh_CN 激活状态\r\n * @en_US Activation state\r\n */\r\n active?: boolean;\r\n /**\r\n * @zh_CN 输入验证函数\r\n * @en_US Enter the verification function\r\n */\r\n inputValidator?: (value: any) => boolean;\r\n /**\r\n * @zh_CN 选择节点事件\r\n * @en_US Node click event\r\n */\r\n nodeEmit?: (node: XAutoCompleteNode) => void;\r\n}\r\n\r\n/**\r\n * @zh_CN 输入框形态变体\r\n * @en_US Input box variant\r\n */\r\nexport type XAutoCompleteVariant = XVariant;\r\n\r\n/**\r\n * @zh_CN AutoComplete 数据对象\r\n * @en_US AutoComplete data object\r\n */\r\nexport interface XAutoCompleteNode extends XParentIdentityProperty<XAutoCompleteNode> {}\r\n\r\n/**\r\n * AutoComplete Portal\r\n * @selector x-auto-complete-portal\r\n * @decorator component\r\n */\r\nexport const XAutoCompletePortalPrefix = 'x-auto-complete-portal';\r\n","import {\r\n Component,\r\n ViewEncapsulation,\r\n ChangeDetectionStrategy,\r\n OnInit,\r\n HostBinding,\r\n HostListener,\r\n TemplateRef,\r\n input,\r\n viewChild,\r\n signal,\r\n model,\r\n output,\r\n DestroyRef,\r\n inject\r\n} from '@angular/core';\r\nimport { XAutoCompleteNode, XAutoCompletePortalPrefix } from './auto-complete.property';\r\nimport { Subject } from 'rxjs';\r\nimport { XConnectBaseAnimation, XPositionTopBottom } from '@ng-nest/ui/core';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { XListComponent } from '@ng-nest/ui/list';\r\nimport { XInputComponent } from '@ng-nest/ui/input';\r\n\r\n@Component({\r\n selector: `${XAutoCompletePortalPrefix}`,\r\n imports: [XListComponent],\r\n templateUrl: './auto-complete-portal.component.html',\r\n styleUrls: ['./auto-complete-portal.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n animations: [XConnectBaseAnimation]\r\n})\r\nexport class XAutoCompletePortalComponent implements OnInit {\r\n @HostBinding('@x-connect-base-animation') public get getPlacement() {\r\n return this.placement();\r\n }\r\n @HostListener('@x-connect-base-animation.done', ['$event']) done() {\r\n if (this.destroy()) return;\r\n this.animating.emit(false);\r\n }\r\n @HostListener('@x-connect-base-animation.start', ['$event']) start() {\r\n if (this.destroy()) return;\r\n this.animating.emit(true);\r\n }\r\n list = viewChild.required('list', { read: XListComponent });\r\n\r\n data = input<XAutoCompleteNode[]>();\r\n value = input<any>();\r\n placement = input<XPositionTopBottom>();\r\n nodeTpl = input<TemplateRef<any>>();\r\n inputCom = input<XInputComponent>();\r\n keywordText = model<string>('');\r\n caseSensitive = input<boolean>(false);\r\n portalMaxHeight = input<string>('');\r\n portalHeight = input<string>('');\r\n portalWidth = input<string>('');\r\n animating = output<boolean>();\r\n nodeClick = output<XAutoCompleteNode>();\r\n closeSubject!: Subject<void>;\r\n keydownSubject!: Subject<KeyboardEvent>;\r\n active = signal(-1);\r\n destroy = signal(false);\r\n\r\n private unSubject = new Subject<void>();\r\n private destroyRef = inject(DestroyRef);\r\n\r\n ngOnInit(): void {\r\n this.closeSubject.pipe(takeUntil(this.unSubject)).subscribe(() => {\r\n this.list().setUnActive(this.active());\r\n });\r\n this.keydownSubject.pipe(takeUntil(this.unSubject)).subscribe((x) => {\r\n this.list().keydown(x);\r\n });\r\n this.destroyRef.onDestroy(() => {\r\n this.destroy.set(true);\r\n this.unSubject.next();\r\n this.unSubject.complete();\r\n });\r\n }\r\n\r\n stopPropagation(event: Event): void {\r\n event.stopPropagation();\r\n }\r\n\r\n onNodeClick(node: XAutoCompleteNode) {\r\n this.keywordText.set(node.label);\r\n this.nodeClick.emit(node);\r\n }\r\n\r\n onActive(num: number) {\r\n this.active.set(num);\r\n }\r\n\r\n onTabOut() {\r\n this.closeSubject.next();\r\n }\r\n}\r\n","<div\r\n #autoCompletePortal\r\n class=\"x-auto-complete-portal\"\r\n tabindex=\"-1\"\r\n (click)=\"inputCom()?.inputFocus('focus'); stopPropagation($event)\"\r\n [style.maxHeight]=\"portalHeight() ? portalHeight() : portalMaxHeight()\"\r\n [style.height]=\"portalHeight()\"\r\n>\r\n <x-list\r\n #list\r\n [data]=\"data()!\"\r\n (nodeClick)=\"onNodeClick($event)\"\r\n (keyManagerChange)=\"onActive($event)\"\r\n (keyManagerTabOut)=\"onTabOut()\"\r\n [nodeTpl]=\"nodeTpl()\"\r\n [scrollElement]=\"autoCompletePortal\"\r\n [keywordText]=\"keywordText()\"\r\n [caseSensitive]=\"caseSensitive()\"\r\n [inPortal]=\"true\"\r\n ></x-list>\r\n</div>\r\n","import { BehaviorSubject, Subject, fromEvent } from 'rxjs';\r\nimport {\r\n Component,\r\n OnInit,\r\n ViewEncapsulation,\r\n ChangeDetectionStrategy,\r\n ElementRef,\r\n SimpleChanges,\r\n OnChanges,\r\n ViewContainerRef,\r\n inject,\r\n signal,\r\n viewChild,\r\n ComponentRef,\r\n effect,\r\n computed\r\n} from '@angular/core';\r\nimport { XAutoCompleteNode, XAutoCompleteProperty, XAutoCompletePrefix } from './auto-complete.property';\r\nimport {\r\n XIsEmpty,\r\n XIsObservable,\r\n XIsChange,\r\n XSetData,\r\n XPositionTopBottom,\r\n XIsFunction,\r\n XParents,\r\n XPlacement\r\n} from '@ng-nest/ui/core';\r\nimport { XPortalService, XPortalConnectedPosition } from '@ng-nest/ui/portal';\r\nimport { XInputComponent } from '@ng-nest/ui/input';\r\nimport { XAutoCompletePortalComponent } from './auto-complete-portal.component';\r\nimport {\r\n Overlay,\r\n FlexibleConnectedPositionStrategy,\r\n ConnectedOverlayPositionChange,\r\n OverlayConfig,\r\n OverlayRef\r\n} from '@angular/cdk/overlay';\r\nimport { debounceTime, distinctUntilChanged, filter, takeUntil } from 'rxjs/operators';\r\nimport { DOWN_ARROW, UP_ARROW, ENTER, MAC_ENTER, ESCAPE } from '@angular/cdk/keycodes';\r\nimport { XValueAccessor } from '@ng-nest/ui/base-form';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { toSignal } from '@angular/core/rxjs-interop';\r\n\r\n@Component({\r\n selector: `${XAutoCompletePrefix}`,\r\n imports: [FormsModule, ReactiveFormsModule, XInputComponent],\r\n templateUrl: './auto-complete.component.html',\r\n styleUrls: ['./auto-complete.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [XValueAccessor(XAutoCompleteComponent)]\r\n})\r\nexport class XAutoCompleteComponent extends XAutoCompleteProperty implements OnInit, OnChanges {\r\n inputCom = viewChild.required('inputCom', { read: XInputComponent });\r\n\r\n nodes = signal<XAutoCompleteNode[]>([]);\r\n searchNodes = signal<XAutoCompleteNode[]>([]);\r\n icon = signal('');\r\n iconSpin = signal(false);\r\n animating = signal(false);\r\n\r\n valueTplContextSignal = signal<{ $node: any; $isValue: boolean }>({ $node: null, $isValue: true });\r\n valueTplContextComputed = computed(() => {\r\n return this.valueTplContext() ? this.valueTplContext() : this.valueTplContextSignal();\r\n });\r\n\r\n inputChange = new BehaviorSubject<any>(null);\r\n closeSubject: Subject<void> = new Subject();\r\n keydownSubject: Subject<KeyboardEvent> = new Subject();\r\n private unSubject = new Subject<void>();\r\n private portalService = inject(XPortalService);\r\n private viewContainerRef = inject(ViewContainerRef);\r\n private overlay = inject(Overlay);\r\n private elementRef = inject(ElementRef);\r\n\r\n private realPlacement = signal<XPlacement | null>(null);\r\n portalComponent = signal<ComponentRef<XAutoCompletePortalComponent> | null>(null);\r\n portalOverlayRef = signal<OverlayRef | null>(null);\r\n inputChanged = toSignal(this.inputChange.pipe(filter((x) => x !== null)));\r\n\r\n constructor() {\r\n super();\r\n effect(() => this.portalComponent()?.setInput('value', this.value()));\r\n effect(() => this.portalComponent()?.setInput('placement', this.realPlacement()));\r\n effect(() => this.portalComponent()?.setInput('data', this.searchNodes()));\r\n effect(() => this.portalComponent()?.setInput('nodeTpl', this.nodeTpl()));\r\n effect(() => this.portalComponent()?.setInput('portalMaxHeight', this.portalMaxHeight()));\r\n effect(() => this.portalComponent()?.setInput('portalHeight', this.portalHeight()));\r\n effect(() => this.portalComponent()?.setInput('portalWidth', this.portalWidth()));\r\n effect(() => this.portalComponent()?.setInput('caseSensitive', this.caseSensitive()));\r\n effect(() => this.portalComponent()?.setInput('inputCom', this.inputCom()));\r\n effect(() => this.portalComponent()?.setInput('keywordText', this.inputChanged()));\r\n }\r\n\r\n ngOnInit() {\r\n this.setSubject();\r\n this.setParantScroll();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n const { data } = changes;\r\n XIsChange(data) && this.setData();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.setPortal();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.unSubject.next();\r\n this.unSubject.complete();\r\n }\r\n\r\n setData() {\r\n if (XIsObservable(this.data()) || XIsFunction(this.data())) return;\r\n XSetData<XAutoCompleteNode>(this.data(), this.unSubject).subscribe((x) => {\r\n this.nodes.set(x);\r\n this.searchNodes.set(x);\r\n this.setPortal();\r\n });\r\n }\r\n\r\n setSubject() {\r\n this.closeSubject.pipe(takeUntil(this.unSubject)).subscribe(() => {\r\n this.closePortal();\r\n });\r\n this.inputChange\r\n .pipe(\r\n filter((x) => x !== null),\r\n debounceTime(this.debounceTime() as number),\r\n distinctUntilChanged(),\r\n takeUntil(this.unSubject)\r\n )\r\n .subscribe((x) => {\r\n this.modelChange(x);\r\n });\r\n this.keydownSubject.pipe(takeUntil(this.unSubject)).subscribe((x) => {\r\n const keyCode = x.keyCode;\r\n if (!this.portalAttached() && [DOWN_ARROW, UP_ARROW, ENTER, MAC_ENTER].includes(keyCode)) {\r\n this.inputChange.next(this.value());\r\n }\r\n if (this.portalAttached() && [ESCAPE].includes(keyCode)) {\r\n this.closeSubject.next();\r\n }\r\n });\r\n }\r\n\r\n setParantScroll() {\r\n const parents = XParents(this.elementRef.nativeElement);\r\n let firstScroll: HTMLElement | null = null;\r\n for (let item of parents) {\r\n if (item.clientHeight < item.scrollHeight) {\r\n firstScroll = item;\r\n break;\r\n }\r\n }\r\n if (firstScroll && firstScroll.tagName !== 'BODY') {\r\n fromEvent(firstScroll, 'scroll')\r\n .pipe(\r\n filter(() => this.portalAttached()!),\r\n takeUntil(this.unSubject)\r\n )\r\n .subscribe(() => {\r\n this.portalOverlayRef()?.updatePosition();\r\n const eract = this.elementRef.nativeElement.getBoundingClientRect();\r\n const frect = firstScroll!.getBoundingClientRect();\r\n if (eract.top + eract.height - frect.top < 0 || eract.bottom > frect.bottom) {\r\n this.closeSubject.next();\r\n }\r\n });\r\n }\r\n }\r\n\r\n portalAttached() {\r\n return this.portalOverlayRef()?.hasAttached();\r\n }\r\n\r\n closePortal() {\r\n if (!this.portalAttached()) return;\r\n this.portalOverlayRef()?.detach();\r\n this.active.set(false);\r\n if (!this.onlySelect()) return;\r\n if (\r\n !this.nodes()\r\n .map((x) => x.label)\r\n .includes(this.value())\r\n ) {\r\n this.value.set('');\r\n if (this.onChange) this.onChange(this.value());\r\n this.inputChange.next(this.value());\r\n }\r\n }\r\n\r\n showPortal() {\r\n if (XIsEmpty(this.value()) || this.disabledComputed() || this.iconSpin() || this.animating()) return;\r\n this.active.set(true);\r\n if ((XIsObservable(this.data()) && this.nodes.length === 0) || XIsFunction(this.data())) {\r\n this.icon.set('fto-loader');\r\n this.iconSpin.set(true);\r\n XSetData<XAutoCompleteNode>(this.data(), this.unSubject, true, this.value()).subscribe((x) => {\r\n this.icon.set('');\r\n this.iconSpin.set(false);\r\n this.nodes.set(x);\r\n this.createPortal();\r\n });\r\n } else {\r\n this.createPortal();\r\n }\r\n }\r\n\r\n createPortal() {\r\n this.nodes()\r\n .filter((x) => x.selected)\r\n .map((x) => (x.selected = false));\r\n if (XIsFunction(this.data())) {\r\n this.searchNodes.set(this.nodes());\r\n } else if (!XIsEmpty(this.value())) {\r\n this.setSearchNodes(this.value());\r\n }\r\n const box = this.inputCom().inputRef().nativeElement.getBoundingClientRect();\r\n const config: OverlayConfig = {\r\n backdropClass: '',\r\n panelClass: this.portalClass(),\r\n width: this.portalWidth() || box.width,\r\n positionStrategy: this.setPlacement(),\r\n scrollStrategy: this.overlay.scrollStrategies.reposition()\r\n };\r\n this.setPosition(config);\r\n const portal = this.portalService.attach({\r\n content: XAutoCompletePortalComponent,\r\n viewContainerRef: this.viewContainerRef,\r\n overlayConfig: config\r\n });\r\n let { componentRef, overlayRef } = portal;\r\n if (!componentRef || !overlayRef) return;\r\n this.portalComponent.set(componentRef);\r\n this.portalOverlayRef.set(overlayRef);\r\n this.realPlacement.set(this.placement());\r\n overlayRef\r\n ?.outsidePointerEvents()\r\n .pipe(takeUntil(this.unSubject))\r\n .subscribe(() => {\r\n this.closeSubject.next();\r\n });\r\n const { animating, nodeClick } = componentRef.instance;\r\n animating.subscribe((ing: boolean) => this.animating.set(ing));\r\n nodeClick.subscribe((node: XAutoCompleteNode) => this.onNodeClick(node));\r\n Object.assign(componentRef.instance, {\r\n closeSubject: this.closeSubject,\r\n keydownSubject: this.keydownSubject\r\n });\r\n }\r\n\r\n setPosition(config: OverlayConfig) {\r\n let position = config.positionStrategy as FlexibleConnectedPositionStrategy;\r\n position.positionChanges.pipe(takeUntil(this.unSubject)).subscribe((pos: ConnectedOverlayPositionChange) => {\r\n const place = XPortalConnectedPosition.get(pos.connectionPair) as XPositionTopBottom;\r\n if (place !== this.realPlacement()) {\r\n this.realPlacement.set(place);\r\n this.portalOverlayRef()?.updatePosition();\r\n }\r\n });\r\n }\r\n\r\n onNodeClick(node: XAutoCompleteNode) {\r\n if (this.value() === node.label) {\r\n this.nodeEmit.emit(node);\r\n this.closeSubject.next();\r\n return;\r\n }\r\n this.value.set(node.label);\r\n this.valueTplContextSignal.update((x) => {\r\n x.$node = node;\r\n return { ...x };\r\n });\r\n this.inputCom().inputFocus();\r\n if (this.onChange) this.onChange(this.value());\r\n this.nodeEmit.emit(node);\r\n this.closeSubject.next();\r\n }\r\n\r\n setPlacement() {\r\n return this.portalService.setPlacement({\r\n elementRef: this.inputCom().inputRef(),\r\n placement: [this.placement() as XPositionTopBottom, 'bottom-start', 'bottom-end', 'top-start', 'top-end'],\r\n transformOriginOn: 'x-auto-complete-portal'\r\n });\r\n }\r\n\r\n setPortal() {\r\n this.portalAttached() && this.portalOverlayRef()?.updatePositionStrategy(this.setPlacement());\r\n }\r\n\r\n setSearchNodes(value: string | number) {\r\n if (this.caseSensitive()) {\r\n this.searchNodes.set(this.nodes().filter((x) => x.label.indexOf(value) >= 0));\r\n } else {\r\n this.searchNodes.set(\r\n this.nodes().filter((x) => (x.label as string).toLowerCase().indexOf((value as string).toLowerCase()) >= 0)\r\n );\r\n }\r\n }\r\n\r\n modelChange(value: string | number) {\r\n if (XIsFunction(this.data())) {\r\n if (!this.portalAttached()) {\r\n this.showPortal();\r\n } else {\r\n if (XIsEmpty(value)) {\r\n this.closeSubject.next();\r\n } else {\r\n this.icon.set('fto-loader');\r\n this.iconSpin.set(true);\r\n XSetData<XAutoCompleteNode>(this.data(), this.unSubject, true, value as any).subscribe((x) => {\r\n this.icon.set('');\r\n this.iconSpin.set(false);\r\n this.nodes.set(x);\r\n this.searchNodes.set(this.nodes());\r\n });\r\n }\r\n }\r\n if (!this.onlySelect()) {\r\n this.onChange && this.onChange(value);\r\n }\r\n return;\r\n }\r\n if (this.nodes()) {\r\n if (!this.portalAttached()) {\r\n this.showPortal();\r\n } else {\r\n if (XIsEmpty(value)) {\r\n this.closeSubject.next();\r\n } else {\r\n this.setSearchNodes(value);\r\n }\r\n }\r\n }\r\n if (!this.onlySelect()) {\r\n this.onChange && this.onChange(value);\r\n }\r\n }\r\n\r\n onKeydown($event: KeyboardEvent) {\r\n this.keydownSubject.next($event);\r\n }\r\n\r\n onInput(_event: Event) {\r\n this.formControlValidator();\r\n setTimeout(() => {\r\n this.inputChange.next(this.value());\r\n });\r\n }\r\n}\r\n","<div #autoComplete class=\"x-auto-complete\">\r\n <div class=\"x-auto-complete-row\">\r\n <x-input\r\n #inputCom\r\n type=\"text\"\r\n [label]=\"label()\"\r\n [labelWidth]=\"labelWidth()\"\r\n [labelAlign]=\"labelAlign()\"\r\n [justify]=\"justify()\"\r\n [align]=\"align()\"\r\n [direction]=\"direction()\"\r\n [disabled]=\"disabledComputed()\"\r\n [required]=\"requiredComputed()\"\r\n [validator]=\"validatorComputed()\"\r\n [inputValidator]=\"inputValidator()\"\r\n [icon]=\"icon()\"\r\n [iconSpin]=\"iconSpin()\"\r\n [placeholder]=\"placeholder()\"\r\n [readonly]=\"readonly()\"\r\n [clearable]=\"false\"\r\n [(ngModel)]=\"value\"\r\n [valueTpl]=\"valueTpl()\"\r\n [valueTplContext]=\"valueTplContextComputed()\"\r\n [size]=\"size()\"\r\n [bordered]=\"bordered()\"\r\n [before]=\"before()\"\r\n [after]=\"after()\"\r\n [pattern]=\"patternComputed()\"\r\n [message]=\"messageComputed()\"\r\n [pointer]=\"pointer()\"\r\n [variant]=\"variant()\"\r\n [(active)]=\"active\"\r\n (xInput)=\"onInput($event)\"\r\n (xKeydown)=\"onKeydown($event)\"\r\n (xClick)=\"showPortal()\"\r\n ></x-input>\r\n </div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { XAutoCompleteComponent } from './auto-complete.component';\r\n\r\n@NgModule({\r\n exports: [XAutoCompleteComponent],\r\n imports: [XAutoCompleteComponent]\r\n})\r\nexport class XAutoCompleteModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ng-nest-ui-auto-complete.mjs","sources":["../../../../lib/ng-nest/ui/auto-complete/auto-complete.property.ts","../../../../lib/ng-nest/ui/auto-complete/auto-complete-portal.component.ts","../../../../lib/ng-nest/ui/auto-complete/auto-complete-portal.component.html","../../../../lib/ng-nest/ui/auto-complete/auto-complete.component.ts","../../../../lib/ng-nest/ui/auto-complete/auto-complete.component.html","../../../../lib/ng-nest/ui/auto-complete/auto-complete.module.ts","../../../../lib/ng-nest/ui/auto-complete/ng-nest-ui-auto-complete.ts"],"sourcesContent":["import {\r\n XParentIdentityProperty,\r\n XData,\r\n XPositionTopBottom,\r\n XSize,\r\n XBoolean,\r\n XAlign,\r\n XJustify,\r\n XDirection,\r\n XTemplate,\r\n XToNumber,\r\n XNumber,\r\n XToBoolean,\r\n XToCssPixelValue,\r\n XVariant,\r\n XFloatLabel\r\n} from '@ng-nest/ui/core';\r\nimport { Component, TemplateRef, input, model, output } from '@angular/core';\r\nimport { XFormControlFunction, XFormOption } from '@ng-nest/ui/base-form';\r\n\r\n/**\r\n * AutoComplete\r\n * @selector x-auto-complete\r\n * @decorator component\r\n */\r\nexport const XAutoCompletePrefix = 'x-auto-complete';\r\nconst X_AUTOCOMPLETE_CONFIG_NAME = 'autoComplete';\r\n\r\n/**\r\n * AutoComplete Property\r\n */\r\n@Component({ selector: `${XAutoCompletePrefix}-property`, template: '' })\r\nexport class XAutoCompleteProperty extends XFormControlFunction(X_AUTOCOMPLETE_CONFIG_NAME) {\r\n /**\r\n * @zh_CN 节点数据\r\n * @en_US Node data\r\n */\r\n readonly data = input<XData<XAutoCompleteNode>>([]);\r\n /**\r\n * @zh_CN 形态变体\r\n * @en_US Input variant\r\n */\r\n readonly variant = input<XAutoCompleteVariant>(this.config?.variant ?? 'outlined');\r\n /**\r\n * @zh_CN 输入延迟执行时间,ms\r\n * @en_US Enter a delay execution time, ms\r\n */\r\n readonly debounceTime = input<number, XNumber>(this.config?.debounceTime ?? 200, { transform: XToNumber });\r\n /**\r\n * @zh_CN 展示方位\r\n * @en_US Display position\r\n */\r\n readonly placement = input<XPositionTopBottom>(this.config?.placement ?? 'bottom');\r\n /**\r\n * @zh_CN 节点模板\r\n * @en_US Node template\r\n */\r\n readonly nodeTpl = input<TemplateRef<any>>();\r\n /**\r\n * @zh_CN 显示边框\r\n * @en_US Display Border\r\n */\r\n readonly bordered = input<boolean, XBoolean>(this.config?.bordered ?? true, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 下拉框的最大高度\r\n * @en_US The biggest height of the drop-down box\r\n */\r\n readonly portalMaxHeight = input<string, XNumber>(this.config?.portalMaxHeight ?? '12rem', {\r\n transform: XToCssPixelValue\r\n });\r\n /**\r\n * @zh_CN 下拉框的高度,启用虚拟滚动的时候必须设置一个高度\r\n * @en_US The biggest height of the drop-down box\r\n */\r\n readonly portalHeight = input<string, XNumber>('', {\r\n transform: XToCssPixelValue\r\n });\r\n /**\r\n * @zh_CN 下拉框的宽度\r\n * @en_US The width of the drop-down box\r\n */\r\n readonly portalWidth = input<string, XNumber>('', { transform: XToCssPixelValue });\r\n /**\r\n * @zh_CN 下拉框设置样式名\r\n * @en_US The style class name of the drop-down box\r\n */\r\n readonly portalClass = input<string | string[]>('');\r\n /**\r\n * @zh_CN 匹配区分大小写\r\n * @en_US Case-sensitive\r\n */\r\n readonly caseSensitive = input<boolean, XBoolean>(this.config?.caseSensitive ?? true, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 只能是选择的值\r\n * @en_US Can only be the value of choice\r\n */\r\n readonly onlySelect = input<boolean, XBoolean>(this.config?.onlySelect ?? false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 浮动标签\r\n * @en_US Float label\r\n */\r\n readonly floatLabel = input<XAutoCompleteFloatLabel | null>(this.config?.floatLabel ?? null);\r\n /**\r\n * @zh_CN 固定浮动标签\r\n * @en_US Fixed float label\r\n */\r\n readonly floatFixed = input<boolean, XBoolean>(this.config?.floatFixed ?? false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 尺寸\r\n * @en_US Size\r\n */\r\n override readonly size = input<XSize>(this.config?.size ?? 'medium');\r\n /**\r\n * @zh_CN 输入框点击样式\r\n * @en_US Input pointer\r\n */\r\n override readonly pointer = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 标签\r\n * @en_US Label\r\n */\r\n override readonly label = input<XTemplate>('');\r\n /**\r\n * @zh_CN 标签宽度\r\n * @en_US Label width\r\n */\r\n override readonly labelWidth = input<string, XNumber>('', { transform: XToCssPixelValue });\r\n /**\r\n * @zh_CN 标签文字对齐方式\r\n * @en_US Label text alignment method\r\n */\r\n override readonly labelAlign = input<XAlign>('start');\r\n /**\r\n * @zh_CN flex 布局下的子元素水平排列方式\r\n * @en_US The level of sub-element level arrangement under flex layout\r\n */\r\n override readonly justify = input<XJustify>('start');\r\n /**\r\n * @zh_CN flex 布局下的子元素垂直排列方式\r\n * @en_US sub-element vertical arrangement method under flex layout\r\n */\r\n override readonly align = input<XAlign>('start');\r\n /**\r\n * @zh_CN flex 布局下的子元素排列方向\r\n * @en_US The direction of the sub-element arrangement under flex layout\r\n */\r\n override readonly direction = input<XDirection>('column');\r\n /**\r\n * @zh_CN 输入提示信息\r\n * @en_US Enter prompt information\r\n */\r\n override readonly placeholder = input<string | string[]>('');\r\n /**\r\n * @zh_CN 禁用\r\n * @en_US Disabled\r\n */\r\n override readonly disabled = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 必填\r\n * @en_US Required\r\n */\r\n override readonly required = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 只读\r\n * @en_US Readonly\r\n */\r\n override readonly readonly = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 值模板\r\n * @en_US Node template\r\n */\r\n override readonly valueTpl = input<TemplateRef<any>>();\r\n /**\r\n * @zh_CN 值模板参数\r\n * @en_US Node template\r\n */\r\n override readonly valueTplContext = input();\r\n /**\r\n * @zh_CN 前置标签\r\n * @en_US Before label\r\n */\r\n override readonly before = input<XTemplate>();\r\n /**\r\n * @zh_CN 后置标签\r\n * @en_US After label\r\n */\r\n override readonly after = input<XTemplate>();\r\n /**\r\n * @zh_CN 正则验证规则\r\n * @en_US Regular verification rules\r\n */\r\n override readonly pattern = input<RegExp | RegExp[] | any>(null);\r\n /**\r\n * @zh_CN 验证不通过提示文字\r\n * @en_US Verify not pass the prompt text\r\n */\r\n override readonly message = input<string | string[]>([]);\r\n /**\r\n * @zh_CN 激活状态\r\n * @en_US Activation state\r\n */\r\n override readonly active = model<boolean>(false);\r\n /**\r\n * @zh_CN 输入验证函数\r\n * @en_US Enter the verification function\r\n */\r\n override readonly inputValidator = input<(value: any) => boolean>();\r\n /**\r\n * @zh_CN 选择节点事件\r\n * @en_US Node click event\r\n */\r\n readonly nodeEmit = output<XAutoCompleteNode>();\r\n}\r\n\r\n/**\r\n * AutoComplete Option\r\n */\r\nexport interface XAutoCompleteOption extends XFormOption {\r\n /**\r\n * @zh_CN 节点数据\r\n * @en_US Node data\r\n */\r\n data?: XData<XAutoCompleteNode>;\r\n /**\r\n * @zh_CN 形态变体\r\n * @en_US Input variant\r\n */\r\n variant?: XAutoCompleteVariant;\r\n /**\r\n * @zh_CN 输入延迟执行时间,ms\r\n * @en_US Enter a delay execution time, ms\r\n */\r\n debounceTime?: number;\r\n /**\r\n * @zh_CN 展示方位\r\n * @en_US Display position\r\n */\r\n placement?: XPositionTopBottom;\r\n /**\r\n * @zh_CN 节点模板\r\n * @en_US Node template\r\n */\r\n nodeTpl?: TemplateRef<any>;\r\n /**\r\n * @zh_CN 显示边框\r\n * @en_US Display Border\r\n */\r\n bordered?: boolean;\r\n /**\r\n * @zh_CN 匹配区分大小写\r\n * @en_US Case-sensitive\r\n */\r\n caseSensitive?: boolean;\r\n /**\r\n * @zh_CN 只能是选择的值\r\n * @en_US Can only be the value of choice\r\n */\r\n onlySelect?: boolean;\r\n /**\r\n * @zh_CN 浮动标签\r\n * @en_US Float label\r\n */\r\n floatLabel?: XAutoCompleteFloatLabel;\r\n /**\r\n * @zh_CN 固定浮动标签\r\n * @en_US Fixed float label\r\n */\r\n floatFixed?: boolean;\r\n /**\r\n * @zh_CN 尺寸\r\n * @en_US Size\r\n */\r\n size?: XSize;\r\n /**\r\n * @zh_CN 输入框点击样式\r\n * @en_US Input pointer\r\n */\r\n pointer?: boolean;\r\n /**\r\n * @zh_CN 标签\r\n * @en_US Label\r\n */\r\n label?: string;\r\n /**\r\n * @zh_CN 标签宽度\r\n * @en_US Label width\r\n */\r\n labelWidth?: string;\r\n /**\r\n * @zh_CN 标签文字对齐方式\r\n * @en_US Label text alignment method\r\n */\r\n labelAlign?: XAlign;\r\n /**\r\n * @zh_CN flex 布局下的子元素水平排列方式\r\n * @en_US The level of sub-element level arrangement under flex layout\r\n */\r\n justify?: XJustify;\r\n /**\r\n * @zh_CN flex 布局下的子元素垂直排列方式\r\n * @en_US sub-element vertical arrangement method under flex layout\r\n */\r\n align?: XAlign;\r\n /**\r\n * @zh_CN flex 布局下的子元素排列方向\r\n * @en_US The direction of the sub-element arrangement under flex layout\r\n */\r\n direction?: XDirection;\r\n /**\r\n * @zh_CN 输入提示信息\r\n * @en_US Enter prompt information\r\n */\r\n placeholder?: string;\r\n /**\r\n * @zh_CN 禁用\r\n * @en_US Disabled\r\n */\r\n disabled?: boolean;\r\n /**\r\n * @zh_CN 必填\r\n * @en_US Required\r\n */\r\n required?: boolean;\r\n /**\r\n * @zh_CN 只读\r\n * @en_US Readonly\r\n */\r\n readonly?: boolean;\r\n /**\r\n * @zh_CN 值模板\r\n * @en_US Node template\r\n */\r\n valueTpl?: TemplateRef<any>;\r\n /**\r\n * @zh_CN 值模板参数\r\n * @en_US Node template\r\n */\r\n valueTplContext?: any;\r\n /**\r\n * @zh_CN 前置标签\r\n * @en_US Before label\r\n */\r\n before?: XTemplate;\r\n /**\r\n * @zh_CN 后置标签\r\n * @en_US After label\r\n */\r\n after?: XTemplate;\r\n /**\r\n * @zh_CN 正则验证规则\r\n * @en_US Regular verification rules\r\n */\r\n pattern?: RegExp | RegExp[];\r\n /**\r\n * @zh_CN 验证不通过提示文字\r\n * @en_US Verify not pass the prompt text\r\n */\r\n message?: string | string[];\r\n /**\r\n * @zh_CN 激活状态\r\n * @en_US Activation state\r\n */\r\n active?: boolean;\r\n /**\r\n * @zh_CN 输入验证函数\r\n * @en_US Enter the verification function\r\n */\r\n inputValidator?: (value: any) => boolean;\r\n /**\r\n * @zh_CN 选择节点事件\r\n * @en_US Node click event\r\n */\r\n nodeEmit?: (node: XAutoCompleteNode) => void;\r\n}\r\n\r\n/**\r\n * @zh_CN 浮动标签类型\r\n * @en_US Float label type\r\n */\r\nexport type XAutoCompleteFloatLabel = XFloatLabel;\r\n\r\n/**\r\n * @zh_CN 输入框形态变体\r\n * @en_US Input box variant\r\n */\r\nexport type XAutoCompleteVariant = XVariant;\r\n\r\n/**\r\n * @zh_CN AutoComplete 数据对象\r\n * @en_US AutoComplete data object\r\n */\r\nexport interface XAutoCompleteNode extends XParentIdentityProperty<XAutoCompleteNode> {}\r\n\r\n/**\r\n * AutoComplete Portal\r\n * @selector x-auto-complete-portal\r\n * @decorator component\r\n */\r\nexport const XAutoCompletePortalPrefix = 'x-auto-complete-portal';\r\n","import {\r\n Component,\r\n ViewEncapsulation,\r\n ChangeDetectionStrategy,\r\n OnInit,\r\n HostBinding,\r\n HostListener,\r\n TemplateRef,\r\n input,\r\n viewChild,\r\n signal,\r\n model,\r\n output,\r\n DestroyRef,\r\n inject\r\n} from '@angular/core';\r\nimport { XAutoCompleteNode, XAutoCompletePortalPrefix } from './auto-complete.property';\r\nimport { Subject } from 'rxjs';\r\nimport { XConnectBaseAnimation, XPositionTopBottom } from '@ng-nest/ui/core';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { XListComponent } from '@ng-nest/ui/list';\r\nimport { XInputComponent } from '@ng-nest/ui/input';\r\n\r\n@Component({\r\n selector: `${XAutoCompletePortalPrefix}`,\r\n imports: [XListComponent],\r\n templateUrl: './auto-complete-portal.component.html',\r\n styleUrls: ['./auto-complete-portal.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n animations: [XConnectBaseAnimation]\r\n})\r\nexport class XAutoCompletePortalComponent implements OnInit {\r\n @HostBinding('@x-connect-base-animation') public get getPlacement() {\r\n return this.placement();\r\n }\r\n @HostListener('@x-connect-base-animation.done', ['$event']) done() {\r\n if (this.destroy()) return;\r\n this.animating.emit(false);\r\n }\r\n @HostListener('@x-connect-base-animation.start', ['$event']) start() {\r\n if (this.destroy()) return;\r\n this.animating.emit(true);\r\n }\r\n list = viewChild.required('list', { read: XListComponent });\r\n\r\n data = input<XAutoCompleteNode[]>();\r\n value = input<any>();\r\n placement = input<XPositionTopBottom>();\r\n nodeTpl = input<TemplateRef<any>>();\r\n inputCom = input<XInputComponent>();\r\n keywordText = model<string>('');\r\n caseSensitive = input<boolean>(false);\r\n portalMaxHeight = input<string>('');\r\n portalHeight = input<string>('');\r\n portalWidth = input<string>('');\r\n animating = output<boolean>();\r\n nodeClick = output<XAutoCompleteNode>();\r\n closeSubject!: Subject<void>;\r\n keydownSubject!: Subject<KeyboardEvent>;\r\n active = signal(-1);\r\n destroy = signal(false);\r\n\r\n private unSubject = new Subject<void>();\r\n private destroyRef = inject(DestroyRef);\r\n\r\n ngOnInit(): void {\r\n this.closeSubject.pipe(takeUntil(this.unSubject)).subscribe(() => {\r\n this.list().setUnActive(this.active());\r\n });\r\n this.keydownSubject.pipe(takeUntil(this.unSubject)).subscribe((x) => {\r\n this.list().keydown(x);\r\n });\r\n this.destroyRef.onDestroy(() => {\r\n this.destroy.set(true);\r\n this.unSubject.next();\r\n this.unSubject.complete();\r\n });\r\n }\r\n\r\n stopPropagation(event: Event): void {\r\n event.stopPropagation();\r\n }\r\n\r\n onNodeClick(node: XAutoCompleteNode) {\r\n this.keywordText.set(node.label);\r\n this.nodeClick.emit(node);\r\n }\r\n\r\n onActive(num: number) {\r\n this.active.set(num);\r\n }\r\n\r\n onTabOut() {\r\n this.closeSubject.next();\r\n }\r\n}\r\n","<div\r\n #autoCompletePortal\r\n class=\"x-auto-complete-portal\"\r\n tabindex=\"-1\"\r\n (click)=\"inputCom()?.inputFocus('focus'); stopPropagation($event)\"\r\n [style.maxHeight]=\"portalHeight() ? portalHeight() : portalMaxHeight()\"\r\n [style.height]=\"portalHeight()\"\r\n>\r\n <x-list\r\n #list\r\n [data]=\"data()!\"\r\n (nodeClick)=\"onNodeClick($event)\"\r\n (keyManagerChange)=\"onActive($event)\"\r\n (keyManagerTabOut)=\"onTabOut()\"\r\n [nodeTpl]=\"nodeTpl()\"\r\n [scrollElement]=\"autoCompletePortal\"\r\n [keywordText]=\"keywordText()\"\r\n [caseSensitive]=\"caseSensitive()\"\r\n [inPortal]=\"true\"\r\n ></x-list>\r\n</div>\r\n","import { BehaviorSubject, Subject, fromEvent } from 'rxjs';\r\nimport {\r\n Component,\r\n OnInit,\r\n ViewEncapsulation,\r\n ChangeDetectionStrategy,\r\n ElementRef,\r\n SimpleChanges,\r\n OnChanges,\r\n ViewContainerRef,\r\n inject,\r\n signal,\r\n viewChild,\r\n ComponentRef,\r\n effect,\r\n computed\r\n} from '@angular/core';\r\nimport { XAutoCompleteNode, XAutoCompleteProperty, XAutoCompletePrefix } from './auto-complete.property';\r\nimport {\r\n XIsEmpty,\r\n XIsObservable,\r\n XIsChange,\r\n XSetData,\r\n XPositionTopBottom,\r\n XIsFunction,\r\n XParents,\r\n XPlacement\r\n} from '@ng-nest/ui/core';\r\nimport { XPortalService, XPortalConnectedPosition } from '@ng-nest/ui/portal';\r\nimport { XInputComponent } from '@ng-nest/ui/input';\r\nimport { XAutoCompletePortalComponent } from './auto-complete-portal.component';\r\nimport {\r\n Overlay,\r\n FlexibleConnectedPositionStrategy,\r\n ConnectedOverlayPositionChange,\r\n OverlayConfig,\r\n OverlayRef\r\n} from '@angular/cdk/overlay';\r\nimport { debounceTime, distinctUntilChanged, filter, takeUntil } from 'rxjs/operators';\r\nimport { DOWN_ARROW, UP_ARROW, ENTER, MAC_ENTER, ESCAPE } from '@angular/cdk/keycodes';\r\nimport { XValueAccessor } from '@ng-nest/ui/base-form';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { toSignal } from '@angular/core/rxjs-interop';\r\n\r\n@Component({\r\n selector: `${XAutoCompletePrefix}`,\r\n imports: [FormsModule, ReactiveFormsModule, XInputComponent],\r\n templateUrl: './auto-complete.component.html',\r\n styleUrls: ['./auto-complete.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [XValueAccessor(XAutoCompleteComponent)]\r\n})\r\nexport class XAutoCompleteComponent extends XAutoCompleteProperty implements OnInit, OnChanges {\r\n inputCom = viewChild.required('inputCom', { read: XInputComponent });\r\n\r\n nodes = signal<XAutoCompleteNode[]>([]);\r\n searchNodes = signal<XAutoCompleteNode[]>([]);\r\n icon = signal('');\r\n iconSpin = signal(false);\r\n animating = signal(false);\r\n\r\n valueTplContextSignal = signal<{ $node: any; $isValue: boolean }>({ $node: null, $isValue: true });\r\n valueTplContextComputed = computed(() => {\r\n return this.valueTplContext() ? this.valueTplContext() : this.valueTplContextSignal();\r\n });\r\n\r\n inputChange = new BehaviorSubject<any>(null);\r\n closeSubject: Subject<void> = new Subject();\r\n keydownSubject: Subject<KeyboardEvent> = new Subject();\r\n private unSubject = new Subject<void>();\r\n private portalService = inject(XPortalService);\r\n private viewContainerRef = inject(ViewContainerRef);\r\n private overlay = inject(Overlay);\r\n private elementRef = inject(ElementRef);\r\n\r\n private realPlacement = signal<XPlacement | null>(null);\r\n portalComponent = signal<ComponentRef<XAutoCompletePortalComponent> | null>(null);\r\n portalOverlayRef = signal<OverlayRef | null>(null);\r\n inputChanged = toSignal(this.inputChange.pipe(filter((x) => x !== null)));\r\n\r\n constructor() {\r\n super();\r\n effect(() => this.portalComponent()?.setInput('value', this.value()));\r\n effect(() => this.portalComponent()?.setInput('placement', this.realPlacement()));\r\n effect(() => this.portalComponent()?.setInput('data', this.searchNodes()));\r\n effect(() => this.portalComponent()?.setInput('nodeTpl', this.nodeTpl()));\r\n effect(() => this.portalComponent()?.setInput('portalMaxHeight', this.portalMaxHeight()));\r\n effect(() => this.portalComponent()?.setInput('portalHeight', this.portalHeight()));\r\n effect(() => this.portalComponent()?.setInput('portalWidth', this.portalWidth()));\r\n effect(() => this.portalComponent()?.setInput('caseSensitive', this.caseSensitive()));\r\n effect(() => this.portalComponent()?.setInput('inputCom', this.inputCom()));\r\n effect(() => this.portalComponent()?.setInput('keywordText', this.inputChanged()));\r\n }\r\n\r\n ngOnInit() {\r\n this.setSubject();\r\n this.setParantScroll();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n const { data } = changes;\r\n XIsChange(data) && this.setData();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.setPortal();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.unSubject.next();\r\n this.unSubject.complete();\r\n }\r\n\r\n setData() {\r\n if (XIsObservable(this.data()) || XIsFunction(this.data())) return;\r\n XSetData<XAutoCompleteNode>(this.data(), this.unSubject).subscribe((x) => {\r\n this.nodes.set(x);\r\n this.searchNodes.set(x);\r\n this.setPortal();\r\n });\r\n }\r\n\r\n setSubject() {\r\n this.closeSubject.pipe(takeUntil(this.unSubject)).subscribe(() => {\r\n this.closePortal();\r\n });\r\n this.inputChange\r\n .pipe(\r\n filter((x) => x !== null),\r\n debounceTime(this.debounceTime() as number),\r\n distinctUntilChanged(),\r\n takeUntil(this.unSubject)\r\n )\r\n .subscribe((x) => {\r\n this.modelChange(x);\r\n });\r\n this.keydownSubject.pipe(takeUntil(this.unSubject)).subscribe((x) => {\r\n const keyCode = x.keyCode;\r\n if (!this.portalAttached() && [DOWN_ARROW, UP_ARROW, ENTER, MAC_ENTER].includes(keyCode)) {\r\n this.inputChange.next(this.value());\r\n }\r\n if (this.portalAttached() && [ESCAPE].includes(keyCode)) {\r\n this.closeSubject.next();\r\n }\r\n });\r\n }\r\n\r\n setParantScroll() {\r\n const parents = XParents(this.elementRef.nativeElement);\r\n let firstScroll: HTMLElement | null = null;\r\n for (let item of parents) {\r\n if (item.clientHeight < item.scrollHeight) {\r\n firstScroll = item;\r\n break;\r\n }\r\n }\r\n if (firstScroll && firstScroll.tagName !== 'BODY') {\r\n fromEvent(firstScroll, 'scroll')\r\n .pipe(\r\n filter(() => this.portalAttached()!),\r\n takeUntil(this.unSubject)\r\n )\r\n .subscribe(() => {\r\n this.portalOverlayRef()?.updatePosition();\r\n const eract = this.elementRef.nativeElement.getBoundingClientRect();\r\n const frect = firstScroll!.getBoundingClientRect();\r\n if (eract.top + eract.height - frect.top < 0 || eract.bottom > frect.bottom) {\r\n this.closeSubject.next();\r\n }\r\n });\r\n }\r\n }\r\n\r\n portalAttached() {\r\n return this.portalOverlayRef()?.hasAttached();\r\n }\r\n\r\n closePortal() {\r\n if (!this.portalAttached()) return;\r\n this.portalOverlayRef()?.detach();\r\n this.active.set(false);\r\n if (!this.onlySelect()) return;\r\n if (\r\n !this.nodes()\r\n .map((x) => x.label)\r\n .includes(this.value())\r\n ) {\r\n this.value.set('');\r\n if (this.onChange) this.onChange(this.value());\r\n this.inputChange.next(this.value());\r\n }\r\n }\r\n\r\n showPortal() {\r\n if (XIsEmpty(this.value()) || this.disabledComputed() || this.iconSpin() || this.animating()) return;\r\n this.active.set(true);\r\n if ((XIsObservable(this.data()) && this.nodes.length === 0) || XIsFunction(this.data())) {\r\n this.icon.set('fto-loader');\r\n this.iconSpin.set(true);\r\n XSetData<XAutoCompleteNode>(this.data(), this.unSubject, true, this.value()).subscribe((x) => {\r\n this.icon.set('');\r\n this.iconSpin.set(false);\r\n this.nodes.set(x);\r\n this.createPortal();\r\n });\r\n } else {\r\n this.createPortal();\r\n }\r\n }\r\n\r\n createPortal() {\r\n this.nodes()\r\n .filter((x) => x.selected)\r\n .map((x) => (x.selected = false));\r\n if (XIsFunction(this.data())) {\r\n this.searchNodes.set(this.nodes());\r\n } else if (!XIsEmpty(this.value())) {\r\n this.setSearchNodes(this.value());\r\n }\r\n const box = this.inputCom().inputRef().nativeElement.getBoundingClientRect();\r\n const config: OverlayConfig = {\r\n backdropClass: '',\r\n panelClass: this.portalClass(),\r\n width: this.portalWidth() || box.width,\r\n positionStrategy: this.setPlacement(),\r\n scrollStrategy: this.overlay.scrollStrategies.reposition()\r\n };\r\n this.setPosition(config);\r\n const portal = this.portalService.attach({\r\n content: XAutoCompletePortalComponent,\r\n viewContainerRef: this.viewContainerRef,\r\n overlayConfig: config\r\n });\r\n let { componentRef, overlayRef } = portal;\r\n if (!componentRef || !overlayRef) return;\r\n this.portalComponent.set(componentRef);\r\n this.portalOverlayRef.set(overlayRef);\r\n this.realPlacement.set(this.placement());\r\n overlayRef\r\n ?.outsidePointerEvents()\r\n .pipe(takeUntil(this.unSubject))\r\n .subscribe(() => {\r\n this.closeSubject.next();\r\n });\r\n const { animating, nodeClick } = componentRef.instance;\r\n animating.subscribe((ing: boolean) => this.animating.set(ing));\r\n nodeClick.subscribe((node: XAutoCompleteNode) => this.onNodeClick(node));\r\n Object.assign(componentRef.instance, {\r\n closeSubject: this.closeSubject,\r\n keydownSubject: this.keydownSubject\r\n });\r\n }\r\n\r\n setPosition(config: OverlayConfig) {\r\n let position = config.positionStrategy as FlexibleConnectedPositionStrategy;\r\n position.positionChanges.pipe(takeUntil(this.unSubject)).subscribe((pos: ConnectedOverlayPositionChange) => {\r\n const place = XPortalConnectedPosition.get(pos.connectionPair) as XPositionTopBottom;\r\n if (place !== this.realPlacement()) {\r\n this.realPlacement.set(place);\r\n this.portalOverlayRef()?.updatePosition();\r\n }\r\n });\r\n }\r\n\r\n onNodeClick(node: XAutoCompleteNode) {\r\n if (this.value() === node.label) {\r\n this.nodeEmit.emit(node);\r\n this.closeSubject.next();\r\n return;\r\n }\r\n this.value.set(node.label);\r\n this.valueTplContextSignal.update((x) => {\r\n x.$node = node;\r\n return { ...x };\r\n });\r\n this.inputCom().inputFocus();\r\n if (this.onChange) this.onChange(this.value());\r\n this.nodeEmit.emit(node);\r\n this.closeSubject.next();\r\n }\r\n\r\n setPlacement() {\r\n return this.portalService.setPlacement({\r\n elementRef: this.inputCom().inputRef(),\r\n placement: [this.placement() as XPositionTopBottom, 'bottom-start', 'bottom-end', 'top-start', 'top-end'],\r\n transformOriginOn: 'x-auto-complete-portal'\r\n });\r\n }\r\n\r\n setPortal() {\r\n this.portalAttached() && this.portalOverlayRef()?.updatePositionStrategy(this.setPlacement());\r\n }\r\n\r\n setSearchNodes(value: string | number) {\r\n if (this.caseSensitive()) {\r\n this.searchNodes.set(this.nodes().filter((x) => x.label.indexOf(value) >= 0));\r\n } else {\r\n this.searchNodes.set(\r\n this.nodes().filter((x) => (x.label as string).toLowerCase().indexOf((value as string).toLowerCase()) >= 0)\r\n );\r\n }\r\n }\r\n\r\n modelChange(value: string | number) {\r\n if (XIsFunction(this.data())) {\r\n if (!this.portalAttached()) {\r\n this.showPortal();\r\n } else {\r\n if (XIsEmpty(value)) {\r\n this.closeSubject.next();\r\n } else {\r\n this.icon.set('fto-loader');\r\n this.iconSpin.set(true);\r\n XSetData<XAutoCompleteNode>(this.data(), this.unSubject, true, value as any).subscribe((x) => {\r\n this.icon.set('');\r\n this.iconSpin.set(false);\r\n this.nodes.set(x);\r\n this.searchNodes.set(this.nodes());\r\n });\r\n }\r\n }\r\n if (!this.onlySelect()) {\r\n this.onChange && this.onChange(value);\r\n }\r\n return;\r\n }\r\n if (this.nodes()) {\r\n if (!this.portalAttached()) {\r\n this.showPortal();\r\n } else {\r\n if (XIsEmpty(value)) {\r\n this.closeSubject.next();\r\n } else {\r\n this.setSearchNodes(value);\r\n }\r\n }\r\n }\r\n if (!this.onlySelect()) {\r\n this.onChange && this.onChange(value);\r\n }\r\n }\r\n\r\n onKeydown($event: KeyboardEvent) {\r\n this.keydownSubject.next($event);\r\n }\r\n\r\n onInput(_event: Event) {\r\n this.formControlValidator();\r\n setTimeout(() => {\r\n this.inputChange.next(this.value());\r\n });\r\n }\r\n}\r\n","<div #autoComplete class=\"x-auto-complete\">\r\n <div class=\"x-auto-complete-row\">\r\n <x-input\r\n #inputCom\r\n type=\"text\"\r\n [label]=\"label()\"\r\n [labelWidth]=\"labelWidth()\"\r\n [labelAlign]=\"labelAlign()\"\r\n [justify]=\"justify()\"\r\n [align]=\"align()\"\r\n [direction]=\"direction()\"\r\n [disabled]=\"disabledComputed()\"\r\n [required]=\"requiredComputed()\"\r\n [validator]=\"validatorComputed()\"\r\n [inputValidator]=\"inputValidator()\"\r\n [icon]=\"icon()\"\r\n [iconSpin]=\"iconSpin()\"\r\n [placeholder]=\"placeholder()\"\r\n [readonly]=\"readonly()\"\r\n [clearable]=\"false\"\r\n [(ngModel)]=\"value\"\r\n [valueTpl]=\"valueTpl()\"\r\n [valueTplContext]=\"valueTplContextComputed()\"\r\n [size]=\"size()\"\r\n [bordered]=\"bordered()\"\r\n [before]=\"before()\"\r\n [after]=\"after()\"\r\n [pattern]=\"patternComputed()\"\r\n [message]=\"messageComputed()\"\r\n [pointer]=\"pointer()\"\r\n [variant]=\"variant()\"\r\n [floatLabel]=\"floatLabel()\"\r\n [floatFixed]=\"floatFixed()\"\r\n [(active)]=\"active\"\r\n (xInput)=\"onInput($event)\"\r\n (xKeydown)=\"onKeydown($event)\"\r\n (xClick)=\"showPortal()\"\r\n ></x-input>\r\n </div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { XAutoCompleteComponent } from './auto-complete.component';\r\n\r\n@NgModule({\r\n exports: [XAutoCompleteComponent],\r\n imports: [XAutoCompleteComponent]\r\n})\r\nexport class XAutoCompleteModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -30,7 +30,7 @@ class XAvatarProperty extends XPropertyFunction(X_AVATAR_CONFIG_NAME) {
|
|
|
30
30
|
* ```
|
|
31
31
|
*
|
|
32
32
|
*/
|
|
33
|
-
this.label = input();
|
|
33
|
+
this.label = input(...(ngDevMode ? [undefined, { debugName: "label" }] : []));
|
|
34
34
|
/**
|
|
35
35
|
* @zh_CN 尺寸
|
|
36
36
|
* @en_US Size
|
|
@@ -47,7 +47,7 @@ class XAvatarProperty extends XPropertyFunction(X_AVATAR_CONFIG_NAME) {
|
|
|
47
47
|
* ```
|
|
48
48
|
*
|
|
49
49
|
*/
|
|
50
|
-
this.size = input(this.config?.size ?? 'medium');
|
|
50
|
+
this.size = input(this.config?.size ?? 'medium', ...(ngDevMode ? [{ debugName: "size" }] : []));
|
|
51
51
|
/**
|
|
52
52
|
* @zh_CN 显示图标
|
|
53
53
|
* @en_US Show icon
|
|
@@ -58,7 +58,7 @@ class XAvatarProperty extends XPropertyFunction(X_AVATAR_CONFIG_NAME) {
|
|
|
58
58
|
* ```
|
|
59
59
|
*
|
|
60
60
|
*/
|
|
61
|
-
this.icon = input();
|
|
61
|
+
this.icon = input(...(ngDevMode ? [undefined, { debugName: "icon" }] : []));
|
|
62
62
|
/**
|
|
63
63
|
* @zh_CN 形状
|
|
64
64
|
* @en_US Shape
|
|
@@ -70,7 +70,7 @@ class XAvatarProperty extends XPropertyFunction(X_AVATAR_CONFIG_NAME) {
|
|
|
70
70
|
* ```
|
|
71
71
|
*
|
|
72
72
|
*/
|
|
73
|
-
this.shape = input(this.config?.shape ?? 'circle');
|
|
73
|
+
this.shape = input(this.config?.shape ?? 'circle', ...(ngDevMode ? [{ debugName: "shape" }] : []));
|
|
74
74
|
/**
|
|
75
75
|
* @zh_CN 图片地址
|
|
76
76
|
* @en_US The map's address
|
|
@@ -81,7 +81,7 @@ class XAvatarProperty extends XPropertyFunction(X_AVATAR_CONFIG_NAME) {
|
|
|
81
81
|
* ```
|
|
82
82
|
*
|
|
83
83
|
*/
|
|
84
|
-
this.src = input();
|
|
84
|
+
this.src = input(...(ngDevMode ? [undefined, { debugName: "src" }] : []));
|
|
85
85
|
/**
|
|
86
86
|
* @zh_CN 图片适应方式
|
|
87
87
|
* @en_US Image adaptation method
|
|
@@ -96,7 +96,7 @@ class XAvatarProperty extends XPropertyFunction(X_AVATAR_CONFIG_NAME) {
|
|
|
96
96
|
* ```
|
|
97
97
|
*
|
|
98
98
|
*/
|
|
99
|
-
this.fit = input(this.config?.fit ?? 'cover');
|
|
99
|
+
this.fit = input(this.config?.fit ?? 'cover', ...(ngDevMode ? [{ debugName: "fit" }] : []));
|
|
100
100
|
/**
|
|
101
101
|
* @zh_CN 字符类型的时候左右边距
|
|
102
102
|
* @en_US When the character type is the left and right distance
|
|
@@ -108,7 +108,7 @@ class XAvatarProperty extends XPropertyFunction(X_AVATAR_CONFIG_NAME) {
|
|
|
108
108
|
* ```
|
|
109
109
|
*
|
|
110
110
|
*/
|
|
111
|
-
this.gap = input(this.config?.gap ?? '4px', { transform: XToCssPixelValue });
|
|
111
|
+
this.gap = input(this.config?.gap ?? '4px', ...(ngDevMode ? [{ debugName: "gap", transform: XToCssPixelValue }] : [{ transform: XToCssPixelValue }]));
|
|
112
112
|
/**
|
|
113
113
|
* @zh_CN 背景颜色
|
|
114
114
|
* @en_US Background color
|
|
@@ -120,12 +120,24 @@ class XAvatarProperty extends XPropertyFunction(X_AVATAR_CONFIG_NAME) {
|
|
|
120
120
|
* ```
|
|
121
121
|
*
|
|
122
122
|
*/
|
|
123
|
-
this.backgroundColor = input(this.config?.backgroundColor ?? '#999999');
|
|
123
|
+
this.backgroundColor = input(this.config?.backgroundColor ?? '#999999', ...(ngDevMode ? [{ debugName: "backgroundColor" }] : []));
|
|
124
|
+
/**
|
|
125
|
+
* @zh_CN 文字颜色
|
|
126
|
+
* @en_US color
|
|
127
|
+
* @example
|
|
128
|
+
*
|
|
129
|
+
* ```html
|
|
130
|
+
* <x-avatar label="ng-nest" color="#FFFFFF"></x-avatar>
|
|
131
|
+
* <x-avatar label="ng-nest" color="#333333"></x-avatar>
|
|
132
|
+
* ```
|
|
133
|
+
*
|
|
134
|
+
*/
|
|
135
|
+
this.color = input(this.config?.color ?? '#FFFFFF', ...(ngDevMode ? [{ debugName: "color" }] : []));
|
|
124
136
|
}
|
|
125
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.
|
|
126
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.
|
|
137
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: XAvatarProperty, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
138
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.3.0", type: XAvatarProperty, isStandalone: true, selector: "x-avatar-property", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, shape: { classPropertyName: "shape", publicName: "shape", isSignal: true, isRequired: false, transformFunction: null }, src: { classPropertyName: "src", publicName: "src", isSignal: true, isRequired: false, transformFunction: null }, fit: { classPropertyName: "fit", publicName: "fit", isSignal: true, isRequired: false, transformFunction: null }, gap: { classPropertyName: "gap", publicName: "gap", isSignal: true, isRequired: false, transformFunction: null }, backgroundColor: { classPropertyName: "backgroundColor", publicName: "backgroundColor", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: '', isInline: true }); }
|
|
127
139
|
}
|
|
128
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.
|
|
140
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: XAvatarProperty, decorators: [{
|
|
129
141
|
type: Component,
|
|
130
142
|
args: [{ selector: `${XAvatarPrefix}-property`, template: '' }]
|
|
131
143
|
}] });
|
|
@@ -139,10 +151,10 @@ const XAvatarGroupPrefix = 'x-avatar-group';
|
|
|
139
151
|
* Avatar Group Property
|
|
140
152
|
*/
|
|
141
153
|
class XAvatarGroupProperty extends XProperty {
|
|
142
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.
|
|
143
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.
|
|
154
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: XAvatarGroupProperty, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
155
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.0", type: XAvatarGroupProperty, isStandalone: true, selector: "x-avatar-group-property", usesInheritance: true, ngImport: i0, template: '', isInline: true }); }
|
|
144
156
|
}
|
|
145
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.
|
|
157
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: XAvatarGroupProperty, decorators: [{
|
|
146
158
|
type: Component,
|
|
147
159
|
args: [{ selector: `${XAvatarGroupPrefix}-property`, template: '' }]
|
|
148
160
|
}] });
|
|
@@ -152,16 +164,16 @@ class XAvatarComponent extends XAvatarProperty {
|
|
|
152
164
|
super();
|
|
153
165
|
this.document = inject(DOCUMENT);
|
|
154
166
|
this.avatar = viewChild.required('avatar');
|
|
155
|
-
this.labelRef = viewChild('labelRef');
|
|
156
|
-
this.fontSize = computed(() => parseFloat(XComputedStyle(this.document.documentElement, 'font-size')));
|
|
157
|
-
this.labelWidth = signal(this.labelRef()?.nativeElement.clientWidth);
|
|
167
|
+
this.labelRef = viewChild('labelRef', ...(ngDevMode ? [{ debugName: "labelRef" }] : []));
|
|
168
|
+
this.fontSize = computed(() => parseFloat(XComputedStyle(this.document.documentElement, 'font-size')), ...(ngDevMode ? [{ debugName: "fontSize" }] : []));
|
|
169
|
+
this.labelWidth = signal(this.labelRef()?.nativeElement.clientWidth, ...(ngDevMode ? [{ debugName: "labelWidth" }] : []));
|
|
158
170
|
this.documentWidth = toSignal(XResize(this.document.documentElement).pipe(debounceTime(30), map(({ resizeObserver }) => {
|
|
159
171
|
this.resizeObserver = resizeObserver;
|
|
160
172
|
return this.document.documentElement.clientWidth;
|
|
161
173
|
})), {
|
|
162
174
|
initialValue: this.document.documentElement.clientWidth
|
|
163
175
|
});
|
|
164
|
-
this.isImgError = signal(false);
|
|
176
|
+
this.isImgError = signal(false, ...(ngDevMode ? [{ debugName: "isImgError" }] : []));
|
|
165
177
|
this.styleMap = computed(() => {
|
|
166
178
|
const size = this.size();
|
|
167
179
|
const width = this.documentWidth();
|
|
@@ -201,7 +213,7 @@ class XAvatarComponent extends XAvatarProperty {
|
|
|
201
213
|
else {
|
|
202
214
|
return {};
|
|
203
215
|
}
|
|
204
|
-
});
|
|
216
|
+
}, ...(ngDevMode ? [{ debugName: "styleMap" }] : []));
|
|
205
217
|
this.classMap = computed(() => {
|
|
206
218
|
const classMap = {
|
|
207
219
|
[`${XAvatarPrefix}-${this.shape()}`]: !XIsEmpty(this.shape())
|
|
@@ -214,7 +226,7 @@ class XAvatarComponent extends XAvatarProperty {
|
|
|
214
226
|
classMap[`${XAvatarPrefix}-medium`] = true;
|
|
215
227
|
}
|
|
216
228
|
return classMap;
|
|
217
|
-
});
|
|
229
|
+
}, ...(ngDevMode ? [{ debugName: "classMap" }] : []));
|
|
218
230
|
this.labelStyleMap = computed(() => {
|
|
219
231
|
const label = this.label();
|
|
220
232
|
const labelRef = this.labelRef();
|
|
@@ -225,7 +237,7 @@ class XAvatarComponent extends XAvatarProperty {
|
|
|
225
237
|
let scale = (eleWidth - XToCssPx(this.gap(), this.fontSize()) * 2) / labelWidth;
|
|
226
238
|
scale = scale > 1 ? 1 : scale;
|
|
227
239
|
return { transform: `scale(${scale})` };
|
|
228
|
-
});
|
|
240
|
+
}, ...(ngDevMode ? [{ debugName: "labelStyleMap" }] : []));
|
|
229
241
|
effect(() => this.documentWidth());
|
|
230
242
|
}
|
|
231
243
|
ngAfterViewChecked() {
|
|
@@ -239,10 +251,10 @@ class XAvatarComponent extends XAvatarProperty {
|
|
|
239
251
|
imgError() {
|
|
240
252
|
this.isImgError.set(true);
|
|
241
253
|
}
|
|
242
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.
|
|
243
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.
|
|
254
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: XAvatarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
255
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.0", type: XAvatarComponent, isStandalone: true, selector: "x-avatar", viewQueries: [{ propertyName: "avatar", first: true, predicate: ["avatar"], descendants: true, isSignal: true }, { propertyName: "labelRef", first: true, predicate: ["labelRef"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<span\r\n #avatar\r\n class=\"x-avatar\"\r\n [class.x-avatar-label]=\"label()\"\r\n [ngClass]=\"classMap()\"\r\n [class.x-avatar-error]=\"isImgError()\"\r\n [ngStyle]=\"styleMap()\"\r\n [style.backgroundColor]=\"backgroundColor()\"\r\n>\r\n @if (src() && !isImgError()) {\r\n <img [src]=\"src()\" [style.object-fit]=\"fit()\" (error)=\"imgError()\" />\r\n }\r\n @if (icon()) {\r\n <x-icon [type]=\"icon()\"></x-icon>\r\n }\r\n @if (isImgError()) {\r\n <x-icon type=\"fto-image\"></x-icon>\r\n }\r\n @if (label()) {\r\n <span #labelRef class=\"x-avatar-text\" [ngStyle]=\"labelStyleMap()\" *xOutlet=\"label(); context: { $label: label() }\">\r\n {{ label() }}\r\n </span>\r\n }\r\n</span>\r\n", styles: ["x-avatar{display:flex}.x-avatar{margin:0;padding:0}.x-avatar{font-size:var(--x-font-size);display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;text-align:center;overflow:hidden;color:var(--x-background-100)}.x-avatar>img{display:block;height:100%}.x-avatar-circle{border-radius:50%}.x-avatar-square{border-radius:var(--x-border-radius)}.x-avatar-error>img{height:initial}.x-avatar>span{white-space:nowrap;transition:transform var(--x-animation-duration-base)}.x-avatar-big{height:3.5rem;width:3.5rem;line-height:3.5rem;font-size:2.1rem}.x-avatar-large{height:3rem;width:3rem;line-height:3rem;font-size:1.8rem}.x-avatar-medium{height:2.5rem;width:2.5rem;line-height:2.5rem;font-size:1.5rem}.x-avatar-small{height:2rem;width:2rem;line-height:2rem;font-size:1.2rem}.x-avatar-mini{height:1.5rem;width:1.5rem;line-height:1.5rem;font-size:.9rem}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: XOutletDirective, selector: "[xOutlet]", inputs: ["xOutletContext", "xOutlet"] }, { kind: "component", type: XIconComponent, selector: "x-icon" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
244
256
|
}
|
|
245
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.
|
|
257
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: XAvatarComponent, decorators: [{
|
|
246
258
|
type: Component,
|
|
247
259
|
args: [{ selector: `${XAvatarPrefix}`, imports: [NgClass, NgStyle, XOutletDirective, XIconComponent], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<span\r\n #avatar\r\n class=\"x-avatar\"\r\n [class.x-avatar-label]=\"label()\"\r\n [ngClass]=\"classMap()\"\r\n [class.x-avatar-error]=\"isImgError()\"\r\n [ngStyle]=\"styleMap()\"\r\n [style.backgroundColor]=\"backgroundColor()\"\r\n>\r\n @if (src() && !isImgError()) {\r\n <img [src]=\"src()\" [style.object-fit]=\"fit()\" (error)=\"imgError()\" />\r\n }\r\n @if (icon()) {\r\n <x-icon [type]=\"icon()\"></x-icon>\r\n }\r\n @if (isImgError()) {\r\n <x-icon type=\"fto-image\"></x-icon>\r\n }\r\n @if (label()) {\r\n <span #labelRef class=\"x-avatar-text\" [ngStyle]=\"labelStyleMap()\" *xOutlet=\"label(); context: { $label: label() }\">\r\n {{ label() }}\r\n </span>\r\n }\r\n</span>\r\n", styles: ["x-avatar{display:flex}.x-avatar{margin:0;padding:0}.x-avatar{font-size:var(--x-font-size);display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;text-align:center;overflow:hidden;color:var(--x-background-100)}.x-avatar>img{display:block;height:100%}.x-avatar-circle{border-radius:50%}.x-avatar-square{border-radius:var(--x-border-radius)}.x-avatar-error>img{height:initial}.x-avatar>span{white-space:nowrap;transition:transform var(--x-animation-duration-base)}.x-avatar-big{height:3.5rem;width:3.5rem;line-height:3.5rem;font-size:2.1rem}.x-avatar-large{height:3rem;width:3rem;line-height:3rem;font-size:1.8rem}.x-avatar-medium{height:2.5rem;width:2.5rem;line-height:2.5rem;font-size:1.5rem}.x-avatar-small{height:2rem;width:2rem;line-height:2rem;font-size:1.2rem}.x-avatar-mini{height:1.5rem;width:1.5rem;line-height:1.5rem;font-size:.9rem}\n"] }]
|
|
248
260
|
}], ctorParameters: () => [] });
|
|
@@ -252,10 +264,10 @@ class XAvatarGroupComponent extends XAvatarGroupProperty {
|
|
|
252
264
|
super(...arguments);
|
|
253
265
|
this._has = true;
|
|
254
266
|
}
|
|
255
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.
|
|
256
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.
|
|
267
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: XAvatarGroupComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
268
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.0", type: XAvatarGroupComponent, isStandalone: true, selector: "x-avatar-group", host: { properties: { "class.x-avatar-group": "this._has" } }, usesInheritance: true, ngImport: i0, template: "<ng-content></ng-content>\r\n", styles: ["x-avatar-group{display:flex}.x-avatar-group{margin:0;padding:0}.x-avatar-group>x-avatar{z-index:0}.x-avatar-group>x-avatar:not(:first-child){margin-left:-.5rem}.x-avatar-group>x-avatar .x-avatar{border:var(--x-border-width) var(--x-border-style) var(--x-white)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
257
269
|
}
|
|
258
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.
|
|
270
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: XAvatarGroupComponent, decorators: [{
|
|
259
271
|
type: Component,
|
|
260
272
|
args: [{ selector: `${XAvatarGroupPrefix}`, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-content></ng-content>\r\n", styles: ["x-avatar-group{display:flex}.x-avatar-group{margin:0;padding:0}.x-avatar-group>x-avatar{z-index:0}.x-avatar-group>x-avatar:not(:first-child){margin-left:-.5rem}.x-avatar-group>x-avatar .x-avatar{border:var(--x-border-width) var(--x-border-style) var(--x-white)}\n"] }]
|
|
261
273
|
}], propDecorators: { _has: [{
|
|
@@ -264,11 +276,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImpor
|
|
|
264
276
|
}] } });
|
|
265
277
|
|
|
266
278
|
class XAvatarModule {
|
|
267
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.
|
|
268
|
-
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.
|
|
269
|
-
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.
|
|
279
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: XAvatarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
280
|
+
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.0", ngImport: i0, type: XAvatarModule, imports: [XAvatarComponent, XAvatarGroupComponent], exports: [XAvatarComponent, XAvatarGroupComponent] }); }
|
|
281
|
+
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: XAvatarModule, imports: [XAvatarComponent] }); }
|
|
270
282
|
}
|
|
271
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.
|
|
283
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: XAvatarModule, decorators: [{
|
|
272
284
|
type: NgModule,
|
|
273
285
|
args: [{
|
|
274
286
|
exports: [XAvatarComponent, XAvatarGroupComponent],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ng-nest-ui-avatar.mjs","sources":["../../../../lib/ng-nest/ui/avatar/avatar.property.ts","../../../../lib/ng-nest/ui/avatar/avatar.component.ts","../../../../lib/ng-nest/ui/avatar/avatar.component.html","../../../../lib/ng-nest/ui/avatar/avatar-group.component.ts","../../../../lib/ng-nest/ui/avatar/avatar-group.component.html","../../../../lib/ng-nest/ui/avatar/avatar.module.ts","../../../../lib/ng-nest/ui/avatar/ng-nest-ui-avatar.ts"],"sourcesContent":["import {\r\n XSize,\r\n XTemplate,\r\n XProperty,\r\n XShape,\r\n XFit,\r\n XResponseSize,\r\n XNumber,\r\n XPropertyFunction,\r\n XToCssPixelValue\r\n} from '@ng-nest/ui/core';\r\nimport { Component, input } from '@angular/core';\r\n\r\n/**\r\n * Avatar\r\n * @selector x-avatar\r\n * @decorator component\r\n */\r\nexport const XAvatarPrefix = 'x-avatar';\r\nexport const X_AVATAR_CONFIG_NAME = 'avatar';\r\n\r\n/**\r\n * Avatar Property\r\n */\r\n@Component({ selector: `${XAvatarPrefix}-property`, template: '' })\r\nexport class XAvatarProperty extends XPropertyFunction(X_AVATAR_CONFIG_NAME) {\r\n /**\r\n * @zh_CN 显示字符\r\n * @en_US Display characters\r\n * @example\r\n *\r\n * ```html\r\n * <x-avatar label=\"ng-nest\"></x-avatar>\r\n * ```\r\n *\r\n */\r\n readonly label = input<XTemplate>();\r\n /**\r\n * @zh_CN 尺寸\r\n * @en_US Size\r\n * @example\r\n *\r\n * ```html\r\n * <x-avatar size=\"big\" icon=\"fto-user\"></x-avatar>\r\n * <x-avatar size=\"large\" icon=\"fto-user\"></x-avatar>\r\n * <x-avatar size=\"medium\" icon=\"fto-user\"></x-avatar>\r\n * <x-avatar size=\"small\" icon=\"fto-user\"></x-avatar>\r\n * <x-avatar size=\"mini\" icon=\"fto-user\"></x-avatar>\r\n * <x-avatar [size]=\"100\" icon=\"fto-user\"></x-avatar>\r\n * <x-avatar [size]=\"{ xs: 20, sm: 60, md: 90, lg: 120, xl: 160 }\" icon=\"fto-user\"></x-avatar>\r\n * ```\r\n *\r\n */\r\n readonly size = input<XAvatarSize>(this.config?.size ?? 'medium');\r\n /**\r\n * @zh_CN 显示图标\r\n * @en_US Show icon\r\n * @example\r\n *\r\n * ```html\r\n * <x-avatar icon=\"fto-user\"></x-avatar>\r\n * ```\r\n *\r\n */\r\n readonly icon = input<string>();\r\n /**\r\n * @zh_CN 形状\r\n * @en_US Shape\r\n * @example\r\n *\r\n * ```html\r\n * <x-avatar icon=\"fto-user\" shape=\"circle\"></x-avatar>\r\n * <x-avatar icon=\"fto-user\" shape=\"square\"></x-avatar>\r\n * ```\r\n *\r\n */\r\n readonly shape = input<XAvatarShape>(this.config?.shape ?? 'circle');\r\n /**\r\n * @zh_CN 图片地址\r\n * @en_US The map's address\r\n * @example\r\n *\r\n * ```html\r\n * <x-avatar src=\"https://ngnest.com/img/logo/logo-144x144.png\"></x-avatar>\r\n * ```\r\n *\r\n */\r\n readonly src = input<string>();\r\n /**\r\n * @zh_CN 图片适应方式\r\n * @en_US Image adaptation method\r\n * @example\r\n *\r\n * ```html\r\n * <x-avatar fit=\"fill\" src=\"https://ngnest.com/img/logo/logo-144x144.png\"></x-avatar>\r\n * <x-avatar fit=\"contain\" src=\"https://ngnest.com/img/logo/logo-144x144.png\"></x-avatar>\r\n * <x-avatar fit=\"cover\" src=\"https://ngnest.com/img/logo/logo-144x144.png\"></x-avatar>\r\n * <x-avatar fit=\"none\" src=\"https://ngnest.com/img/logo/logo-144x144.png\"></x-avatar>\r\n * <x-avatar fit=\"scale-down\" src=\"https://ngnest.com/img/logo/logo-144x144.png\"></x-avatar>\r\n * ```\r\n *\r\n */\r\n readonly fit = input<XAvatarFit>(this.config?.fit ?? 'cover');\r\n /**\r\n * @zh_CN 字符类型的时候左右边距\r\n * @en_US When the character type is the left and right distance\r\n * @example\r\n *\r\n * ```html\r\n * <x-avatar label=\"ng-nest\" gap=\"5\"></x-avatar>\r\n * <x-avatar label=\"ng-nest\" gap=\"5px\"></x-avatar>\r\n * ```\r\n *\r\n */\r\n readonly gap = input<string, XNumber>(this.config?.gap ?? '4px', { transform: XToCssPixelValue });\r\n /**\r\n * @zh_CN 背景颜色\r\n * @en_US Background color\r\n * @example\r\n *\r\n * ```html\r\n * <x-avatar label=\"ng-nest\" backgroundColor=\"#999999\"></x-avatar>\r\n * <x-avatar label=\"ng-nest\" backgroundColor=\"#888888\"></x-avatar>\r\n * ```\r\n *\r\n */\r\n readonly backgroundColor = input<string>(this.config?.backgroundColor ?? '#999999');\r\n}\r\n\r\n/**\r\n * @zh_CN 头像形状\r\n * @en_US Avatar shape\r\n */\r\nexport type XAvatarShape = XShape;\r\n\r\n/**\r\n * @zh_CN 当展示类型为图片的时候,设置图片如何适应容器框\r\n * @en_US When the display type is picture, set how the picture fits into the container frame\r\n */\r\nexport type XAvatarFit = XFit;\r\n\r\n/**\r\n * @zh_CN 尺寸类型\r\n * @en_US Size type\r\n */\r\nexport type XAvatarSize = number | XSize | XResponseSize;\r\n\r\n/**\r\n * Avatar Group\r\n * @selector x-avatar-group\r\n * @decorator component\r\n */\r\nexport const XAvatarGroupPrefix = 'x-avatar-group';\r\n\r\n/**\r\n * Avatar Group Property\r\n */\r\n@Component({ selector: `${XAvatarGroupPrefix}-property`, template: '' })\r\nexport class XAvatarGroupProperty extends XProperty {}\r\n","import {\r\n Component,\r\n ViewEncapsulation,\r\n ElementRef,\r\n ChangeDetectionStrategy,\r\n OnDestroy,\r\n inject,\r\n signal,\r\n computed,\r\n viewChild,\r\n effect,\r\n AfterViewChecked\r\n} from '@angular/core';\r\nimport { XAvatarPrefix, XAvatarProperty } from './avatar.property';\r\nimport { XIsEmpty, XIsNumber, XIsString, XIsObject, XComputedStyle, XResize, XToCssPx } from '@ng-nest/ui/core';\r\nimport { DOCUMENT, NgClass, NgStyle } from '@angular/common';\r\nimport { debounceTime, map } from 'rxjs';\r\nimport { XIconComponent } from '@ng-nest/ui/icon';\r\nimport { XOutletDirective } from '@ng-nest/ui/outlet';\r\nimport { toSignal } from '@angular/core/rxjs-interop';\r\nimport type { XClassMap, XResizeObserver, XResponseSize } from '@ng-nest/ui/core';\r\n\r\n@Component({\r\n selector: `${XAvatarPrefix}`,\r\n imports: [NgClass, NgStyle, XOutletDirective, XIconComponent],\r\n templateUrl: './avatar.component.html',\r\n styleUrls: ['./avatar.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XAvatarComponent extends XAvatarProperty implements OnDestroy, AfterViewChecked {\r\n private document = inject(DOCUMENT);\r\n private avatar = viewChild.required<ElementRef<HTMLElement>>('avatar');\r\n private labelRef = viewChild<ElementRef<HTMLElement>>('labelRef');\r\n private fontSize = computed(() => parseFloat(XComputedStyle(this.document.documentElement, 'font-size')));\r\n private resizeObserver!: XResizeObserver;\r\n private labelWidth = signal(this.labelRef()?.nativeElement.clientWidth);\r\n private documentWidth = toSignal(\r\n XResize(this.document.documentElement).pipe(\r\n debounceTime(30),\r\n map(({ resizeObserver }) => {\r\n this.resizeObserver = resizeObserver;\r\n return this.document.documentElement.clientWidth;\r\n })\r\n ),\r\n {\r\n initialValue: this.document.documentElement.clientWidth\r\n }\r\n );\r\n isImgError = signal(false);\r\n styleMap = computed(() => {\r\n const size = this.size();\r\n const width = this.documentWidth();\r\n if (XIsNumber(size)) {\r\n return {\r\n height: `${size}px`,\r\n width: `${size}px`,\r\n lineHeight: `${size}px`,\r\n fontSize: `${size * 0.6}px`\r\n };\r\n } else if (XIsObject<XResponseSize>(size)) {\r\n const { xs, sm, md, lg, xl } = size;\r\n let nsize = 40;\r\n if (xs && width < 768) {\r\n nsize = xs;\r\n }\r\n if (sm && width >= 768) {\r\n nsize = sm;\r\n }\r\n if (md && width >= 992) {\r\n nsize = md;\r\n }\r\n if (lg && width >= 1200) {\r\n nsize = lg;\r\n }\r\n if (xl && width >= 1920) {\r\n nsize = xl;\r\n }\r\n return {\r\n height: `${nsize}px`,\r\n width: `${nsize}px`,\r\n lineHeight: `${nsize}px`,\r\n fontSize: `${nsize * 0.6}px`\r\n };\r\n } else {\r\n return {};\r\n }\r\n });\r\n classMap = computed(() => {\r\n const classMap: XClassMap = {\r\n [`${XAvatarPrefix}-${this.shape()}`]: !XIsEmpty(this.shape())\r\n };\r\n const size = this.size();\r\n if (XIsString(size)) {\r\n classMap[`${XAvatarPrefix}-${size}`] = !XIsEmpty(size);\r\n } else if (XIsObject<XResponseSize>(size)) {\r\n classMap[`${XAvatarPrefix}-medium`] = true;\r\n }\r\n\r\n return classMap;\r\n });\r\n labelStyleMap = computed(() => {\r\n const label = this.label();\r\n const labelRef = this.labelRef();\r\n const labelWidth = this.labelWidth();\r\n if (!label || !this.avatar() || !labelRef || !labelWidth) return {};\r\n const eleWidth = this.avatar().nativeElement.clientWidth;\r\n let scale = (eleWidth - XToCssPx(this.gap(), this.fontSize()) * 2) / labelWidth;\r\n scale = scale > 1 ? 1 : scale;\r\n return { transform: `scale(${scale})` };\r\n });\r\n\r\n constructor() {\r\n super();\r\n effect(() => this.documentWidth());\r\n }\r\n\r\n ngAfterViewChecked() {\r\n if (this.labelRef()) {\r\n this.labelWidth.set(this.labelRef()?.nativeElement.clientWidth);\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.resizeObserver?.disconnect();\r\n }\r\n\r\n imgError() {\r\n this.isImgError.set(true);\r\n }\r\n}\r\n","<span\r\n #avatar\r\n class=\"x-avatar\"\r\n [class.x-avatar-label]=\"label()\"\r\n [ngClass]=\"classMap()\"\r\n [class.x-avatar-error]=\"isImgError()\"\r\n [ngStyle]=\"styleMap()\"\r\n [style.backgroundColor]=\"backgroundColor()\"\r\n>\r\n @if (src() && !isImgError()) {\r\n <img [src]=\"src()\" [style.object-fit]=\"fit()\" (error)=\"imgError()\" />\r\n }\r\n @if (icon()) {\r\n <x-icon [type]=\"icon()\"></x-icon>\r\n }\r\n @if (isImgError()) {\r\n <x-icon type=\"fto-image\"></x-icon>\r\n }\r\n @if (label()) {\r\n <span #labelRef class=\"x-avatar-text\" [ngStyle]=\"labelStyleMap()\" *xOutlet=\"label(); context: { $label: label() }\">\r\n {{ label() }}\r\n </span>\r\n }\r\n</span>\r\n","import { Component, ViewEncapsulation, ChangeDetectionStrategy, HostBinding } from '@angular/core';\r\nimport { XAvatarGroupPrefix, XAvatarGroupProperty } from './avatar.property';\r\n\r\n@Component({\r\n selector: `${XAvatarGroupPrefix}`,\r\n templateUrl: './avatar-group.component.html',\r\n styleUrls: ['./avatar-group.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XAvatarGroupComponent extends XAvatarGroupProperty {\r\n @HostBinding('class.x-avatar-group') _has = true;\r\n}\r\n","<ng-content></ng-content>\r\n","import { NgModule } from '@angular/core';\r\nimport { XAvatarComponent } from './avatar.component';\r\nimport { XAvatarGroupComponent } from './avatar-group.component';\r\n\r\n@NgModule({\r\n exports: [XAvatarComponent, XAvatarGroupComponent],\r\n imports: [XAvatarComponent, XAvatarGroupComponent]\r\n})\r\nexport class XAvatarModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ng-nest-ui-avatar.mjs","sources":["../../../../lib/ng-nest/ui/avatar/avatar.property.ts","../../../../lib/ng-nest/ui/avatar/avatar.component.ts","../../../../lib/ng-nest/ui/avatar/avatar.component.html","../../../../lib/ng-nest/ui/avatar/avatar-group.component.ts","../../../../lib/ng-nest/ui/avatar/avatar-group.component.html","../../../../lib/ng-nest/ui/avatar/avatar.module.ts","../../../../lib/ng-nest/ui/avatar/ng-nest-ui-avatar.ts"],"sourcesContent":["import {\r\n XSize,\r\n XTemplate,\r\n XProperty,\r\n XShape,\r\n XFit,\r\n XResponseSize,\r\n XNumber,\r\n XPropertyFunction,\r\n XToCssPixelValue\r\n} from '@ng-nest/ui/core';\r\nimport { Component, input } from '@angular/core';\r\n\r\n/**\r\n * Avatar\r\n * @selector x-avatar\r\n * @decorator component\r\n */\r\nexport const XAvatarPrefix = 'x-avatar';\r\nexport const X_AVATAR_CONFIG_NAME = 'avatar';\r\n\r\n/**\r\n * Avatar Property\r\n */\r\n@Component({ selector: `${XAvatarPrefix}-property`, template: '' })\r\nexport class XAvatarProperty extends XPropertyFunction(X_AVATAR_CONFIG_NAME) {\r\n /**\r\n * @zh_CN 显示字符\r\n * @en_US Display characters\r\n * @example\r\n *\r\n * ```html\r\n * <x-avatar label=\"ng-nest\"></x-avatar>\r\n * ```\r\n *\r\n */\r\n readonly label = input<XTemplate>();\r\n /**\r\n * @zh_CN 尺寸\r\n * @en_US Size\r\n * @example\r\n *\r\n * ```html\r\n * <x-avatar size=\"big\" icon=\"fto-user\"></x-avatar>\r\n * <x-avatar size=\"large\" icon=\"fto-user\"></x-avatar>\r\n * <x-avatar size=\"medium\" icon=\"fto-user\"></x-avatar>\r\n * <x-avatar size=\"small\" icon=\"fto-user\"></x-avatar>\r\n * <x-avatar size=\"mini\" icon=\"fto-user\"></x-avatar>\r\n * <x-avatar [size]=\"100\" icon=\"fto-user\"></x-avatar>\r\n * <x-avatar [size]=\"{ xs: 20, sm: 60, md: 90, lg: 120, xl: 160 }\" icon=\"fto-user\"></x-avatar>\r\n * ```\r\n *\r\n */\r\n readonly size = input<XAvatarSize>(this.config?.size ?? 'medium');\r\n /**\r\n * @zh_CN 显示图标\r\n * @en_US Show icon\r\n * @example\r\n *\r\n * ```html\r\n * <x-avatar icon=\"fto-user\"></x-avatar>\r\n * ```\r\n *\r\n */\r\n readonly icon = input<string>();\r\n /**\r\n * @zh_CN 形状\r\n * @en_US Shape\r\n * @example\r\n *\r\n * ```html\r\n * <x-avatar icon=\"fto-user\" shape=\"circle\"></x-avatar>\r\n * <x-avatar icon=\"fto-user\" shape=\"square\"></x-avatar>\r\n * ```\r\n *\r\n */\r\n readonly shape = input<XAvatarShape>(this.config?.shape ?? 'circle');\r\n /**\r\n * @zh_CN 图片地址\r\n * @en_US The map's address\r\n * @example\r\n *\r\n * ```html\r\n * <x-avatar src=\"https://ngnest.com/img/logo/logo-144x144.png\"></x-avatar>\r\n * ```\r\n *\r\n */\r\n readonly src = input<string>();\r\n /**\r\n * @zh_CN 图片适应方式\r\n * @en_US Image adaptation method\r\n * @example\r\n *\r\n * ```html\r\n * <x-avatar fit=\"fill\" src=\"https://ngnest.com/img/logo/logo-144x144.png\"></x-avatar>\r\n * <x-avatar fit=\"contain\" src=\"https://ngnest.com/img/logo/logo-144x144.png\"></x-avatar>\r\n * <x-avatar fit=\"cover\" src=\"https://ngnest.com/img/logo/logo-144x144.png\"></x-avatar>\r\n * <x-avatar fit=\"none\" src=\"https://ngnest.com/img/logo/logo-144x144.png\"></x-avatar>\r\n * <x-avatar fit=\"scale-down\" src=\"https://ngnest.com/img/logo/logo-144x144.png\"></x-avatar>\r\n * ```\r\n *\r\n */\r\n readonly fit = input<XAvatarFit>(this.config?.fit ?? 'cover');\r\n /**\r\n * @zh_CN 字符类型的时候左右边距\r\n * @en_US When the character type is the left and right distance\r\n * @example\r\n *\r\n * ```html\r\n * <x-avatar label=\"ng-nest\" gap=\"5\"></x-avatar>\r\n * <x-avatar label=\"ng-nest\" gap=\"5px\"></x-avatar>\r\n * ```\r\n *\r\n */\r\n readonly gap = input<string, XNumber>(this.config?.gap ?? '4px', { transform: XToCssPixelValue });\r\n /**\r\n * @zh_CN 背景颜色\r\n * @en_US Background color\r\n * @example\r\n *\r\n * ```html\r\n * <x-avatar label=\"ng-nest\" backgroundColor=\"#999999\"></x-avatar>\r\n * <x-avatar label=\"ng-nest\" backgroundColor=\"#888888\"></x-avatar>\r\n * ```\r\n *\r\n */\r\n readonly backgroundColor = input<string>(this.config?.backgroundColor ?? '#999999');\r\n /**\r\n * @zh_CN 文字颜色\r\n * @en_US color\r\n * @example\r\n *\r\n * ```html\r\n * <x-avatar label=\"ng-nest\" color=\"#FFFFFF\"></x-avatar>\r\n * <x-avatar label=\"ng-nest\" color=\"#333333\"></x-avatar>\r\n * ```\r\n *\r\n */\r\n readonly color = input<string>(this.config?.color ?? '#FFFFFF');\r\n}\r\n\r\n/**\r\n * Avatar Option\r\n */\r\nexport interface XAvatarOption {\r\n /**\r\n * @zh_CN 显示字符\r\n * @en_US Display characters\r\n */\r\n label?: XTemplate;\r\n /**\r\n * @zh_CN 尺寸\r\n * @en_US Size\r\n */\r\n size?: XAvatarSize;\r\n /**\r\n * @zh_CN 显示图标\r\n * @en_US Show icon\r\n */\r\n icon?: string;\r\n /**\r\n * @zh_CN 形状\r\n * @en_US Shape\r\n */\r\n shape?: XAvatarShape;\r\n /**\r\n * @zh_CN 图片地址\r\n * @en_US The map's address\r\n */\r\n src?: string;\r\n /**\r\n * @zh_CN 图片适应方式\r\n * @en_US Image adaptation method\r\n */\r\n fit?: XAvatarFit;\r\n /**\r\n * @zh_CN 字符类型的时候左右边距\r\n * @en_US When the character type is the left and right distance\r\n */\r\n gap?: string;\r\n /**\r\n * @zh_CN 背景颜色\r\n * @en_US Background color\r\n */\r\n backgroundColor?: string;\r\n /**\r\n * @zh_CN 文字颜色\r\n * @en_US color\r\n */\r\n color?: string;\r\n}\r\n\r\n/**\r\n * @zh_CN 头像形状\r\n * @en_US Avatar shape\r\n */\r\nexport type XAvatarShape = XShape;\r\n\r\n/**\r\n * @zh_CN 当展示类型为图片的时候,设置图片如何适应容器框\r\n * @en_US When the display type is picture, set how the picture fits into the container frame\r\n */\r\nexport type XAvatarFit = XFit;\r\n\r\n/**\r\n * @zh_CN 尺寸类型\r\n * @en_US Size type\r\n */\r\nexport type XAvatarSize = number | XSize | XResponseSize;\r\n\r\n/**\r\n * Avatar Group\r\n * @selector x-avatar-group\r\n * @decorator component\r\n */\r\nexport const XAvatarGroupPrefix = 'x-avatar-group';\r\n\r\n/**\r\n * Avatar Group Property\r\n */\r\n@Component({ selector: `${XAvatarGroupPrefix}-property`, template: '' })\r\nexport class XAvatarGroupProperty extends XProperty {}\r\n","import {\r\n Component,\r\n ViewEncapsulation,\r\n ElementRef,\r\n ChangeDetectionStrategy,\r\n OnDestroy,\r\n inject,\r\n signal,\r\n computed,\r\n viewChild,\r\n effect,\r\n AfterViewChecked\r\n} from '@angular/core';\r\nimport { XAvatarPrefix, XAvatarProperty } from './avatar.property';\r\nimport { XIsEmpty, XIsNumber, XIsString, XIsObject, XComputedStyle, XResize, XToCssPx } from '@ng-nest/ui/core';\r\nimport { DOCUMENT, NgClass, NgStyle } from '@angular/common';\r\nimport { debounceTime, map } from 'rxjs';\r\nimport { XIconComponent } from '@ng-nest/ui/icon';\r\nimport { XOutletDirective } from '@ng-nest/ui/outlet';\r\nimport { toSignal } from '@angular/core/rxjs-interop';\r\nimport type { XClassMap, XResizeObserver, XResponseSize } from '@ng-nest/ui/core';\r\n\r\n@Component({\r\n selector: `${XAvatarPrefix}`,\r\n imports: [NgClass, NgStyle, XOutletDirective, XIconComponent],\r\n templateUrl: './avatar.component.html',\r\n styleUrls: ['./avatar.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XAvatarComponent extends XAvatarProperty implements OnDestroy, AfterViewChecked {\r\n private document = inject(DOCUMENT);\r\n private avatar = viewChild.required<ElementRef<HTMLElement>>('avatar');\r\n private labelRef = viewChild<ElementRef<HTMLElement>>('labelRef');\r\n private fontSize = computed(() => parseFloat(XComputedStyle(this.document.documentElement, 'font-size')));\r\n private resizeObserver!: XResizeObserver;\r\n private labelWidth = signal(this.labelRef()?.nativeElement.clientWidth);\r\n private documentWidth = toSignal(\r\n XResize(this.document.documentElement).pipe(\r\n debounceTime(30),\r\n map(({ resizeObserver }) => {\r\n this.resizeObserver = resizeObserver;\r\n return this.document.documentElement.clientWidth;\r\n })\r\n ),\r\n {\r\n initialValue: this.document.documentElement.clientWidth\r\n }\r\n );\r\n isImgError = signal(false);\r\n styleMap = computed(() => {\r\n const size = this.size();\r\n const width = this.documentWidth();\r\n if (XIsNumber(size)) {\r\n return {\r\n height: `${size}px`,\r\n width: `${size}px`,\r\n lineHeight: `${size}px`,\r\n fontSize: `${size * 0.6}px`\r\n };\r\n } else if (XIsObject<XResponseSize>(size)) {\r\n const { xs, sm, md, lg, xl } = size;\r\n let nsize = 40;\r\n if (xs && width < 768) {\r\n nsize = xs;\r\n }\r\n if (sm && width >= 768) {\r\n nsize = sm;\r\n }\r\n if (md && width >= 992) {\r\n nsize = md;\r\n }\r\n if (lg && width >= 1200) {\r\n nsize = lg;\r\n }\r\n if (xl && width >= 1920) {\r\n nsize = xl;\r\n }\r\n return {\r\n height: `${nsize}px`,\r\n width: `${nsize}px`,\r\n lineHeight: `${nsize}px`,\r\n fontSize: `${nsize * 0.6}px`\r\n };\r\n } else {\r\n return {};\r\n }\r\n });\r\n classMap = computed(() => {\r\n const classMap: XClassMap = {\r\n [`${XAvatarPrefix}-${this.shape()}`]: !XIsEmpty(this.shape())\r\n };\r\n const size = this.size();\r\n if (XIsString(size)) {\r\n classMap[`${XAvatarPrefix}-${size}`] = !XIsEmpty(size);\r\n } else if (XIsObject<XResponseSize>(size)) {\r\n classMap[`${XAvatarPrefix}-medium`] = true;\r\n }\r\n\r\n return classMap;\r\n });\r\n labelStyleMap = computed(() => {\r\n const label = this.label();\r\n const labelRef = this.labelRef();\r\n const labelWidth = this.labelWidth();\r\n if (!label || !this.avatar() || !labelRef || !labelWidth) return {};\r\n const eleWidth = this.avatar().nativeElement.clientWidth;\r\n let scale = (eleWidth - XToCssPx(this.gap(), this.fontSize()) * 2) / labelWidth;\r\n scale = scale > 1 ? 1 : scale;\r\n return { transform: `scale(${scale})` };\r\n });\r\n\r\n constructor() {\r\n super();\r\n effect(() => this.documentWidth());\r\n }\r\n\r\n ngAfterViewChecked() {\r\n if (this.labelRef()) {\r\n this.labelWidth.set(this.labelRef()?.nativeElement.clientWidth);\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.resizeObserver?.disconnect();\r\n }\r\n\r\n imgError() {\r\n this.isImgError.set(true);\r\n }\r\n}\r\n","<span\r\n #avatar\r\n class=\"x-avatar\"\r\n [class.x-avatar-label]=\"label()\"\r\n [ngClass]=\"classMap()\"\r\n [class.x-avatar-error]=\"isImgError()\"\r\n [ngStyle]=\"styleMap()\"\r\n [style.backgroundColor]=\"backgroundColor()\"\r\n>\r\n @if (src() && !isImgError()) {\r\n <img [src]=\"src()\" [style.object-fit]=\"fit()\" (error)=\"imgError()\" />\r\n }\r\n @if (icon()) {\r\n <x-icon [type]=\"icon()\"></x-icon>\r\n }\r\n @if (isImgError()) {\r\n <x-icon type=\"fto-image\"></x-icon>\r\n }\r\n @if (label()) {\r\n <span #labelRef class=\"x-avatar-text\" [ngStyle]=\"labelStyleMap()\" *xOutlet=\"label(); context: { $label: label() }\">\r\n {{ label() }}\r\n </span>\r\n }\r\n</span>\r\n","import { Component, ViewEncapsulation, ChangeDetectionStrategy, HostBinding } from '@angular/core';\r\nimport { XAvatarGroupPrefix, XAvatarGroupProperty } from './avatar.property';\r\n\r\n@Component({\r\n selector: `${XAvatarGroupPrefix}`,\r\n templateUrl: './avatar-group.component.html',\r\n styleUrls: ['./avatar-group.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XAvatarGroupComponent extends XAvatarGroupProperty {\r\n @HostBinding('class.x-avatar-group') _has = true;\r\n}\r\n","<ng-content></ng-content>\r\n","import { NgModule } from '@angular/core';\r\nimport { XAvatarComponent } from './avatar.component';\r\nimport { XAvatarGroupComponent } from './avatar-group.component';\r\n\r\n@NgModule({\r\n exports: [XAvatarComponent, XAvatarGroupComponent],\r\n imports: [XAvatarComponent, XAvatarGroupComponent]\r\n})\r\nexport class XAvatarModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|