@ng-nest/ui 19.0.0 → 19.0.2
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/anchor/anchor.component.d.ts +3 -1
- package/api/api.component.d.ts +1 -1
- package/auto-complete/auto-complete.component.d.ts +1 -3
- package/auto-complete/auto-complete.property.d.ts +1 -1
- package/base-form/base-form.component.d.ts +1 -1
- package/base-form/base-form.property.d.ts +0 -104
- package/carousel/carousel-panel.component.d.ts +1 -1
- package/cascade/cascade.component.d.ts +1 -2
- package/cascade/cascade.property.d.ts +1 -1
- package/checkbox/checkbox.property.d.ts +6 -1
- package/collapse/collapse.component.d.ts +1 -3
- package/collapse/collapse.property.d.ts +1 -15
- package/color-picker/color-picker.component.d.ts +0 -1
- package/color-picker/color-picker.property.d.ts +1 -1
- package/core/config/config.d.ts +1 -0
- package/date-picker/date-picker.component.d.ts +0 -1
- package/date-picker/date-picker.property.d.ts +2 -2
- package/dialog/dialog-portal.component.d.ts +5 -3
- package/dropdown/dropdown.component.d.ts +0 -1
- package/fesm2022/ng-nest-ui-anchor.mjs +11 -7
- package/fesm2022/ng-nest-ui-anchor.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-api.mjs +4 -4
- package/fesm2022/ng-nest-ui-api.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-auto-complete.mjs +14 -23
- package/fesm2022/ng-nest-ui-auto-complete.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-back-top.mjs +1 -1
- package/fesm2022/ng-nest-ui-back-top.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-base-form.mjs +23 -120
- package/fesm2022/ng-nest-ui-base-form.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-calendar.mjs +1 -6
- package/fesm2022/ng-nest-ui-calendar.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-carousel.mjs +3 -11
- package/fesm2022/ng-nest-ui-carousel.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-cascade.mjs +1 -7
- package/fesm2022/ng-nest-ui-cascade.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-checkbox.mjs +2 -2
- package/fesm2022/ng-nest-ui-checkbox.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-collapse.mjs +6 -28
- package/fesm2022/ng-nest-ui-collapse.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-color-picker.mjs +0 -3
- package/fesm2022/ng-nest-ui-color-picker.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-core.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-date-picker.mjs +0 -3
- package/fesm2022/ng-nest-ui-date-picker.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-dialog.mjs +11 -5
- package/fesm2022/ng-nest-ui-dialog.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-dropdown.mjs +0 -3
- package/fesm2022/ng-nest-ui-dropdown.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-image.mjs +2 -2
- package/fesm2022/ng-nest-ui-image.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-select.mjs +4 -6
- package/fesm2022/ng-nest-ui-select.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-table.mjs +28 -12
- package/fesm2022/ng-nest-ui-table.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-textarea.mjs +2 -2
- package/fesm2022/ng-nest-ui-textarea.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-time-picker.mjs +0 -3
- package/fesm2022/ng-nest-ui-time-picker.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-timeline.mjs +1 -11
- package/fesm2022/ng-nest-ui-timeline.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-tooltip.mjs +30 -19
- package/fesm2022/ng-nest-ui-tooltip.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-transfer.mjs +8 -3
- package/fesm2022/ng-nest-ui-transfer.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-tree-file.mjs +2 -2
- package/fesm2022/ng-nest-ui-tree-file.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-tree-select.mjs +93 -53
- package/fesm2022/ng-nest-ui-tree-select.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-tree.mjs +10 -5
- package/fesm2022/ng-nest-ui-tree.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-upload.mjs +3 -6
- package/fesm2022/ng-nest-ui-upload.mjs.map +1 -1
- package/find/find.property.d.ts +1 -1
- package/form/form.property.d.ts +1 -1
- package/input/input.property.d.ts +1 -1
- package/input-number/input-number.property.d.ts +1 -1
- package/list/list.property.d.ts +1 -1
- package/package.json +61 -61
- package/radio/radio.property.d.ts +1 -1
- package/rate/rate.property.d.ts +1 -1
- package/select/select.component.d.ts +0 -1
- package/select/select.property.d.ts +1 -1
- package/slider-select/slider-select.property.d.ts +1 -1
- package/switch/switch.property.d.ts +1 -1
- package/table/table-body.component.d.ts +2 -0
- package/table/table.component.d.ts +2 -2
- package/table/table.property.d.ts +12 -1
- package/textarea/textarea.property.d.ts +1 -1
- package/theme/theme.property.d.ts +1 -1
- package/time-picker/time-picker.component.d.ts +0 -1
- package/time-picker/time-picker.property.d.ts +1 -1
- package/timeline/timeline.property.d.ts +1 -11
- package/tooltip/tooltip.directive.d.ts +5 -3
- package/transfer/transfer.property.d.ts +1 -1
- package/tree/tree.property.d.ts +6 -1
- package/tree-select/tree-select-portal.component.d.ts +1 -4
- package/tree-select/tree-select.component.d.ts +13 -6
- package/tree-select/tree-select.property.d.ts +2 -12
- package/upload/upload.component.d.ts +0 -1
- package/upload/upload.property.d.ts +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ng-nest-ui-base-form.mjs","sources":["../../../../lib/ng-nest/ui/base-form/base-form.property.ts","../../../../lib/ng-nest/ui/base-form/base-form.component.ts","../../../../lib/ng-nest/ui/base-form/base-form.module.ts","../../../../lib/ng-nest/ui/base-form/ng-nest-ui-base-form.ts"],"sourcesContent":["import { Component, TemplateRef, input, model } from '@angular/core';\r\nimport {\r\n XAlign,\r\n XBoolean,\r\n XDirection,\r\n XJustify,\r\n XNumber,\r\n XProperty,\r\n XSize,\r\n XTemplate,\r\n XToBoolean,\r\n XToCssPixelValue\r\n} from '@ng-nest/ui/core';\r\n\r\n/**\r\n * 表单对象共有的参数\r\n */\r\n@Component({ selector: 'x-form-prop', template: '' })\r\nexport class XFormProp extends XProperty {\r\n /**\r\n * @zh_CN 标签\r\n * @en_US Label\r\n */\r\n readonly label = input<string>('');\r\n /**\r\n * @zh_CN 标签宽度\r\n * @en_US Label width\r\n */\r\n 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 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 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 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 readonly direction = input<XDirection>('column');\r\n /**\r\n * @zh_CN 尺寸\r\n * @en_US Size\r\n */\r\n readonly size = input<XSize>('medium');\r\n /**\r\n * @zh_CN 输入提示信息\r\n * @en_US Enter prompt information\r\n */\r\n readonly placeholder = input<string | string[]>('');\r\n /**\r\n * @zh_CN 禁用\r\n * @en_US Disabled\r\n */\r\n readonly disabled = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 必填\r\n * @en_US Required\r\n */\r\n readonly required = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 只读\r\n * @en_US Readonly\r\n */\r\n readonly readonly = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 值模板\r\n * @en_US Node template\r\n */\r\n readonly valueTpl = input<TemplateRef<any>>();\r\n /**\r\n * @zh_CN 值模板参数\r\n * @en_US Node template\r\n */\r\n readonly valueTplContext = input();\r\n /**\r\n * @zh_CN 前置标签\r\n * @en_US Before label\r\n */\r\n readonly before = input<XTemplate>();\r\n /**\r\n * @zh_CN 后置标签\r\n * @en_US After label\r\n */\r\n readonly after = input<XTemplate>();\r\n /**\r\n * @zh_CN 正则验证规则\r\n * @en_US Regular verification rules\r\n */\r\n readonly pattern = input<any>();\r\n /**\r\n * @zh_CN 验证不通过提示文字\r\n * @en_US Verify not pass the prompt text\r\n */\r\n readonly message = input<string | string[]>('');\r\n /**\r\n * @zh_CN 激活状态\r\n * @en_US Activation state\r\n */\r\n readonly active = model<boolean>(false);\r\n /**\r\n * @zh_CN 输入框点击样式\r\n * @en_US Enter box click style\r\n */\r\n readonly pointer = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 输入验证函数\r\n * @en_US Enter the verification function\r\n */\r\n readonly inputValidator = input<(value: any) => boolean>();\r\n}\r\n\r\nexport interface XFormOption {\r\n /**\r\n * 标签\r\n */\r\n label?: any;\r\n /**\r\n * 标签宽度\r\n */\r\n labelWidth?: string;\r\n /**\r\n * 标签文字对齐方式\r\n */\r\n labelAlign?: XAlign;\r\n /**\r\n * flex 布局下的子元素水平排列方式\r\n */\r\n justify?: XJustify;\r\n /**\r\n * flex 布局下的子元素垂直排列方式\r\n */\r\n align?: XAlign;\r\n /**\r\n * flex 布局下的子元素排列方向\r\n */\r\n direction?: XDirection;\r\n /**\r\n * 尺寸\r\n */\r\n size?: XSize;\r\n /**\r\n * 输入提示信息\r\n */\r\n placeholder?: string | string[];\r\n /**\r\n * 禁用\r\n */\r\n disabled?: boolean;\r\n /**\r\n * 必填\r\n */\r\n required?: boolean;\r\n /**\r\n * 正则验证规则\r\n */\r\n pattern?: RegExp | RegExp[];\r\n /**\r\n * 验证不通过提示文字\r\n */\r\n message?: string | string[];\r\n /**\r\n * 激活状态\r\n */\r\n active?: boolean;\r\n /**\r\n * 输入框点击样式\r\n */\r\n pointer?: boolean;\r\n /**\r\n * 输入验证函数\r\n */\r\n inputValidator?: (value: any) => boolean;\r\n}\r\n\r\n/**\r\n * 表单对象共有的参数\r\n */\r\n@Component({ selector: 'x-formcontrol-prop', template: '' })\r\nexport class XFormControlProp extends XProperty {\r\n /**\r\n * @zh_CN 初始启用验证,在输入值都自动开启\r\n * @en_US Initial enable validation, which is automatically enabled when the input value is\r\n */\r\n readonly validator = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 标签\r\n * @en_US Label\r\n */\r\n readonly label = input<string>('');\r\n /**\r\n * @zh_CN 标签宽度\r\n * @en_US Label width\r\n */\r\n 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 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 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 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 readonly direction = input<XDirection>('column');\r\n /**\r\n * @zh_CN 尺寸\r\n * @en_US Size\r\n */\r\n readonly size = input<XSize>('medium');\r\n /**\r\n * @zh_CN 输入提示信息\r\n * @en_US Enter prompt information\r\n */\r\n readonly placeholder = input<string | string[]>('');\r\n /**\r\n * @zh_CN 禁用\r\n * @en_US Disabled\r\n */\r\n readonly disabled = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 必填\r\n * @en_US Required\r\n */\r\n readonly required = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 只读\r\n * @en_US Readonly\r\n */\r\n readonly readonly = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 值模板\r\n * @en_US Node template\r\n */\r\n readonly valueTpl = input<TemplateRef<any>>();\r\n /**\r\n * @zh_CN 值模板参数\r\n * @en_US Node template\r\n */\r\n readonly valueTplContext = input();\r\n /**\r\n * @zh_CN 前置标签\r\n * @en_US Before label\r\n */\r\n readonly before = input<XTemplate>();\r\n /**\r\n * @zh_CN 后置标签\r\n * @en_US After label\r\n */\r\n readonly after = input<XTemplate>();\r\n /**\r\n * @zh_CN 正则验证规则\r\n * @en_US Regular verification rules\r\n */\r\n readonly pattern = input<RegExp | RegExp[]>([]);\r\n /**\r\n * @zh_CN 验证不通过提示文字\r\n * @en_US Verify not pass the prompt text\r\n */\r\n readonly message = input<string | string[]>([]);\r\n /**\r\n * @zh_CN 激活状态\r\n * @en_US Activation state\r\n */\r\n readonly active = model<boolean>(false);\r\n /**\r\n * @zh_CN 输入框点击样式\r\n * @en_US Enter box click style\r\n */\r\n readonly pointer = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 输入验证函数\r\n * @en_US Enter the verification function\r\n */\r\n readonly inputValidator = input<(value: any) => boolean>();\r\n}\r\n","import {\r\n AbstractControl,\r\n ControlValueAccessor,\r\n NG_VALUE_ACCESSOR,\r\n ValidationErrors,\r\n ValidatorFn\r\n} from '@angular/forms';\r\nimport { ChangeDetectorRef, computed, forwardRef, inject, signal, Type } from '@angular/core';\r\nimport { XIsEmpty, XIsUndefined, XIsFunction, XComponentConfigKey, XConfigService, XIsNull } from '@ng-nest/ui/core';\r\nimport { XFormControlProp } from './base-form.property';\r\n\r\nexport function XValueAccessor<T>(component: Type<T>) {\r\n return { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => component), multi: true };\r\n}\r\n\r\nexport function XFormInputValidator(func: (value: any) => boolean): ValidatorFn {\r\n return (control: AbstractControl): ValidationErrors | null => {\r\n if (!XIsFunction(func)) return null;\r\n const invalid = !func(control.value);\r\n return invalid ? { inputValidator: true } : null;\r\n };\r\n}\r\n\r\nexport function XFormControlFunction<C extends XComponentConfigKey>(configName: C) {\r\n return class XFormControlFun extends XFormControlProp implements ControlValueAccessor {\r\n config = inject(XConfigService).getConfigForComponent(configName);\r\n cdr = inject(ChangeDetectorRef);\r\n invalid = computed(() => {\r\n return (\r\n this.validatorComputed() && ((!XIsEmpty(this.value()) && this.invalidPattern()) || this.invalidInputValidator())\r\n );\r\n });\r\n invalidPattern = computed(() => {\r\n const pattern = this.patternComputed();\r\n if (!this.validatorComputed() || XIsUndefined(pattern) || XIsNull(pattern)) return false;\r\n let result = false;\r\n let index = 0;\r\n\r\n if (Array.isArray(pattern)) {\r\n for (const pt of pattern) {\r\n result = !new RegExp(pt).test(this.value() as any);\r\n if (result) {\r\n this.invalidIndex.set(index);\r\n break;\r\n }\r\n index++;\r\n }\r\n } else {\r\n result = !new RegExp(pattern as RegExp).test(this.value() as any);\r\n }\r\n return result;\r\n });\r\n requiredIsEmpty = computed(() => {\r\n return this.validatorComputed() && this.requiredComputed() && XIsEmpty(this.value());\r\n });\r\n invalidMessage = computed(() => {\r\n if (!this.validatorComputed()) return '';\r\n const message = this.messageComputed();\r\n if (Array.isArray(message)) {\r\n return message.length > this.invalidIndex() ? message[this.invalidIndex()] : '';\r\n } else {\r\n return message as string;\r\n }\r\n });\r\n invalidIndex = signal(0);\r\n value = signal<any | undefined>(undefined);\r\n validatorSignal = signal(false);\r\n disabledSignal = signal(false);\r\n requiredSignal = signal(false);\r\n patternSignal = signal<any>([]);\r\n messageSignal = signal<string | string[]>([]);\r\n\r\n requiredComputed = computed(() => this.requiredSignal() || this.required());\r\n disabledComputed = computed(() => this.disabledSignal() || this.disabled());\r\n validatorComputed = computed(() => this.validatorSignal() || this.validator());\r\n patternComputed = computed(() => {\r\n if (XIsEmpty(this.patternSignal())) return this.pattern();\r\n else return this.patternSignal();\r\n });\r\n messageComputed = computed(() => {\r\n if (XIsEmpty(this.messageSignal())) return this.message();\r\n else return this.messageSignal();\r\n });\r\n\r\n invalidInputValidator = signal(false);\r\n onChange!: (value: any) => void;\r\n onTouched!: () => void;\r\n writeValue(value: any): void {\r\n this.value.set(value);\r\n }\r\n registerOnChange(fn: (value: any) => void): void {\r\n this.onChange = fn;\r\n }\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n setDisabledState(disabled: boolean) {\r\n this.disabledSignal.set(disabled);\r\n }\r\n formControlValidator() {\r\n this.validatorSignal.set(true);\r\n }\r\n };\r\n}\r\n","import { NgModule } from '@angular/core';\r\n\r\n@NgModule({\r\n imports: [],\r\n exports: []\r\n})\r\nexport class XBaseFormModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;AAcA;;AAEG;AAEG,MAAO,SAAU,SAAQ,SAAS,CAAA;AADxC,IAAA,WAAA,GAAA;;AAEE;;;AAGG;AACM,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAS,EAAE,CAAC;AAClC;;;AAGG;QACM,IAAU,CAAA,UAAA,GAAG,KAAK,CAAkB,EAAE,EAAE,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC;AACjF;;;AAGG;AACM,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAS,OAAO,CAAC;AAC5C;;;AAGG;AACM,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAW,OAAO,CAAC;AAC3C;;;AAGG;AACM,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAS,OAAO,CAAC;AACvC;;;AAGG;AACM,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAa,QAAQ,CAAC;AAChD;;;AAGG;AACM,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAQ,QAAQ,CAAC;AACtC;;;AAGG;AACM,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAoB,EAAE,CAAC;AACnD;;;AAGG;QACM,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAoB,KAAK,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;AAC9E;;;AAGG;QACM,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAoB,KAAK,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;AAC9E;;;AAGG;QACM,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAoB,KAAK,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;AAC9E;;;AAGG;QACM,IAAQ,CAAA,QAAA,GAAG,KAAK,EAAoB;AAC7C;;;AAGG;QACM,IAAe,CAAA,eAAA,GAAG,KAAK,EAAE;AAClC;;;AAGG;QACM,IAAM,CAAA,MAAA,GAAG,KAAK,EAAa;AACpC;;;AAGG;QACM,IAAK,CAAA,KAAA,GAAG,KAAK,EAAa;AACnC;;;AAGG;QACM,IAAO,CAAA,OAAA,GAAG,KAAK,EAAO;AAC/B;;;AAGG;AACM,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAoB,EAAE,CAAC;AAC/C;;;AAGG;AACM,QAAA,IAAA,CAAA,MAAM,GAAG,KAAK,CAAU,KAAK,CAAC;AACvC;;;AAGG;QACM,IAAO,CAAA,OAAA,GAAG,KAAK,CAAoB,KAAK,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;AAC7E;;;AAGG;QACM,IAAc,CAAA,cAAA,GAAG,KAAK,EAA2B;AAC3D;iIArGY,SAAS,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAT,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,SAAS,mqFAD0B,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;;2FACrC,SAAS,EAAA,UAAA,EAAA,CAAA;kBADrB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA,EAAE,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,EAAE,EAAE;;AAuKpD;;AAEG;AAEG,MAAO,gBAAiB,SAAQ,SAAS,CAAA;AAD/C,IAAA,WAAA,GAAA;;AAEE;;;AAGG;QACM,IAAS,CAAA,SAAA,GAAG,KAAK,CAAoB,KAAK,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;AAC/E;;;AAGG;AACM,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAS,EAAE,CAAC;AAClC;;;AAGG;QACM,IAAU,CAAA,UAAA,GAAG,KAAK,CAAkB,EAAE,EAAE,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC;AACjF;;;AAGG;AACM,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAS,OAAO,CAAC;AAC5C;;;AAGG;AACM,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAW,OAAO,CAAC;AAC3C;;;AAGG;AACM,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAS,OAAO,CAAC;AACvC;;;AAGG;AACM,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAa,QAAQ,CAAC;AAChD;;;AAGG;AACM,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAQ,QAAQ,CAAC;AACtC;;;AAGG;AACM,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAoB,EAAE,CAAC;AACnD;;;AAGG;QACM,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAoB,KAAK,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;AAC9E;;;AAGG;QACM,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAoB,KAAK,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;AAC9E;;;AAGG;QACM,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAoB,KAAK,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;AAC9E;;;AAGG;QACM,IAAQ,CAAA,QAAA,GAAG,KAAK,EAAoB;AAC7C;;;AAGG;QACM,IAAe,CAAA,eAAA,GAAG,KAAK,EAAE;AAClC;;;AAGG;QACM,IAAM,CAAA,MAAA,GAAG,KAAK,EAAa;AACpC;;;AAGG;QACM,IAAK,CAAA,KAAA,GAAG,KAAK,EAAa;AACnC;;;AAGG;AACM,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAoB,EAAE,CAAC;AAC/C;;;AAGG;AACM,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAoB,EAAE,CAAC;AAC/C;;;AAGG;AACM,QAAA,IAAA,CAAA,MAAM,GAAG,KAAK,CAAU,KAAK,CAAC;AACvC;;;AAGG;QACM,IAAO,CAAA,OAAA,GAAG,KAAK,CAAoB,KAAK,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;AAC7E;;;AAGG;QACM,IAAc,CAAA,cAAA,GAAG,KAAK,EAA2B;AAC3D;iIA1GY,gBAAgB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhB,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAgB,8yFAD0B,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;;2FAC5C,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAD5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA,EAAE,QAAQ,EAAE,oBAAoB,EAAE,QAAQ,EAAE,EAAE,EAAE;;;AChLrD,SAAU,cAAc,CAAI,SAAkB,EAAA;AAClD,IAAA,OAAO,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,UAAU,CAAC,MAAM,SAAS,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE;AAC9F;AAEM,SAAU,mBAAmB,CAAC,IAA6B,EAAA;IAC/D,OAAO,CAAC,OAAwB,KAA6B;AAC3D,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;AAAE,YAAA,OAAO,IAAI;QACnC,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;AACpC,QAAA,OAAO,OAAO,GAAG,EAAE,cAAc,EAAE,IAAI,EAAE,GAAG,IAAI;AAClD,KAAC;AACH;AAEM,SAAU,oBAAoB,CAAgC,UAAa,EAAA;IAC/E,OAAO,MAAM,eAAgB,SAAQ,gBAAgB,CAAA;AAA9C,QAAA,WAAA,GAAA;;YACL,IAAM,CAAA,MAAA,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC,qBAAqB,CAAC,UAAU,CAAC;AACjE,YAAA,IAAA,CAAA,GAAG,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAC/B,YAAA,IAAA,CAAA,OAAO,GAAG,QAAQ,CAAC,MAAK;AACtB,gBAAA,QACE,IAAI,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,IAAI,CAAC,cAAc,EAAE,KAAK,IAAI,CAAC,qBAAqB,EAAE,CAAC;AAEpH,aAAC,CAAC;AACF,YAAA,IAAA,CAAA,cAAc,GAAG,QAAQ,CAAC,MAAK;AAC7B,gBAAA,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,EAAE;AACtC,gBAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,YAAY,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC;AAAE,oBAAA,OAAO,KAAK;gBACxF,IAAI,MAAM,GAAG,KAAK;gBAClB,IAAI,KAAK,GAAG,CAAC;AAEb,gBAAA,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;AAC1B,oBAAA,KAAK,MAAM,EAAE,IAAI,OAAO,EAAE;AACxB,wBAAA,MAAM,GAAG,CAAC,IAAI,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAS,CAAC;wBAClD,IAAI,MAAM,EAAE;AACV,4BAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC;4BAC5B;;AAEF,wBAAA,KAAK,EAAE;;;qBAEJ;AACL,oBAAA,MAAM,GAAG,CAAC,IAAI,MAAM,CAAC,OAAiB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAS,CAAC;;AAEnE,gBAAA,OAAO,MAAM;AACf,aAAC,CAAC;AACF,YAAA,IAAA,CAAA,eAAe,GAAG,QAAQ,CAAC,MAAK;AAC9B,gBAAA,OAAO,IAAI,CAAC,iBAAiB,EAAE,IAAI,IAAI,CAAC,gBAAgB,EAAE,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;AACtF,aAAC,CAAC;AACF,YAAA,IAAA,CAAA,cAAc,GAAG,QAAQ,CAAC,MAAK;AAC7B,gBAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;AAAE,oBAAA,OAAO,EAAE;AACxC,gBAAA,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,EAAE;AACtC,gBAAA,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;oBAC1B,OAAO,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,GAAG,EAAE;;qBAC1E;AACL,oBAAA,OAAO,OAAiB;;AAE5B,aAAC,CAAC;AACF,YAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,CAAC,CAAC;AACxB,YAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAkB,SAAS,CAAC;AAC1C,YAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,KAAK,CAAC;AAC/B,YAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,KAAK,CAAC;AAC9B,YAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,KAAK,CAAC;AAC9B,YAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAM,EAAE,CAAC;AAC/B,YAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAoB,EAAE,CAAC;AAE7C,YAAA,IAAA,CAAA,gBAAgB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;AAC3E,YAAA,IAAA,CAAA,gBAAgB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;AAC3E,YAAA,IAAA,CAAA,iBAAiB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;AAC9E,YAAA,IAAA,CAAA,eAAe,GAAG,QAAQ,CAAC,MAAK;AAC9B,gBAAA,IAAI,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;AAAE,oBAAA,OAAO,IAAI,CAAC,OAAO,EAAE;;AACpD,oBAAA,OAAO,IAAI,CAAC,aAAa,EAAE;AAClC,aAAC,CAAC;AACF,YAAA,IAAA,CAAA,eAAe,GAAG,QAAQ,CAAC,MAAK;AAC9B,gBAAA,IAAI,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;AAAE,oBAAA,OAAO,IAAI,CAAC,OAAO,EAAE;;AACpD,oBAAA,OAAO,IAAI,CAAC,aAAa,EAAE;AAClC,aAAC,CAAC;AAEF,YAAA,IAAA,CAAA,qBAAqB,GAAG,MAAM,CAAC,KAAK,CAAC;;AAGrC,QAAA,UAAU,CAAC,KAAU,EAAA;AACnB,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;;AAEvB,QAAA,gBAAgB,CAAC,EAAwB,EAAA;AACvC,YAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;;AAEpB,QAAA,iBAAiB,CAAC,EAAc,EAAA;AAC9B,YAAA,IAAI,CAAC,SAAS,GAAG,EAAE;;AAErB,QAAA,gBAAgB,CAAC,QAAiB,EAAA;AAChC,YAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC;;QAEnC,oBAAoB,GAAA;AAClB,YAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC;;KAEjC;AACH;;MCjGa,eAAe,CAAA;iIAAf,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;kIAAf,eAAe,EAAA,CAAA,CAAA;kIAAf,eAAe,EAAA,CAAA,CAAA;;2FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAJ3B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE,EAAE;AACX,oBAAA,OAAO,EAAE;AACV,iBAAA;;;ACLD;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"ng-nest-ui-base-form.mjs","sources":["../../../../lib/ng-nest/ui/base-form/base-form.property.ts","../../../../lib/ng-nest/ui/base-form/base-form.component.ts","../../../../lib/ng-nest/ui/base-form/base-form.module.ts","../../../../lib/ng-nest/ui/base-form/ng-nest-ui-base-form.ts"],"sourcesContent":["import { Component, TemplateRef, input, model } from '@angular/core';\r\nimport {\r\n XAlign,\r\n XBoolean,\r\n XDirection,\r\n XJustify,\r\n XNumber,\r\n XProperty,\r\n XSize,\r\n XTemplate,\r\n XToBoolean,\r\n XToCssPixelValue\r\n} from '@ng-nest/ui/core';\r\n\r\n/**\r\n * 表单对象共有的参数\r\n */\r\nexport interface XFormOption {\r\n /**\r\n * 标签\r\n */\r\n label?: any;\r\n /**\r\n * 标签宽度\r\n */\r\n labelWidth?: string;\r\n /**\r\n * 标签文字对齐方式\r\n */\r\n labelAlign?: XAlign;\r\n /**\r\n * flex 布局下的子元素水平排列方式\r\n */\r\n justify?: XJustify;\r\n /**\r\n * flex 布局下的子元素垂直排列方式\r\n */\r\n align?: XAlign;\r\n /**\r\n * flex 布局下的子元素排列方向\r\n */\r\n direction?: XDirection;\r\n /**\r\n * 尺寸\r\n */\r\n size?: XSize;\r\n /**\r\n * 输入提示信息\r\n */\r\n placeholder?: string | string[];\r\n /**\r\n * 禁用\r\n */\r\n disabled?: boolean;\r\n /**\r\n * 必填\r\n */\r\n required?: boolean;\r\n /**\r\n * 正则验证规则\r\n */\r\n pattern?: RegExp | RegExp[];\r\n /**\r\n * 验证不通过提示文字\r\n */\r\n message?: string | string[];\r\n /**\r\n * 激活状态\r\n */\r\n active?: boolean;\r\n /**\r\n * 输入框点击样式\r\n */\r\n pointer?: boolean;\r\n /**\r\n * 输入验证函数\r\n */\r\n inputValidator?: (value: any) => boolean;\r\n}\r\n\r\n/**\r\n * 表单对象共有的参数\r\n */\r\n@Component({ selector: 'x-formcontrol-prop', template: '' })\r\nexport class XFormControlProp extends XProperty {\r\n /**\r\n * @zh_CN 初始启用验证,在输入值都自动开启\r\n * @en_US Initial enable validation, which is automatically enabled when the input value is\r\n */\r\n readonly validator = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 标签\r\n * @en_US Label\r\n */\r\n readonly label = input<string>('');\r\n /**\r\n * @zh_CN 标签宽度\r\n * @en_US Label width\r\n */\r\n 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 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 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 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 readonly direction = input<XDirection>('column');\r\n /**\r\n * @zh_CN 尺寸\r\n * @en_US Size\r\n */\r\n readonly size = input<XSize>('medium');\r\n /**\r\n * @zh_CN 输入提示信息\r\n * @en_US Enter prompt information\r\n */\r\n readonly placeholder = input<string | string[]>('');\r\n /**\r\n * @zh_CN 禁用\r\n * @en_US Disabled\r\n */\r\n readonly disabled = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 必填\r\n * @en_US Required\r\n */\r\n readonly required = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 只读\r\n * @en_US Readonly\r\n */\r\n readonly readonly = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 值模板\r\n * @en_US Node template\r\n */\r\n readonly valueTpl = input<TemplateRef<any>>();\r\n /**\r\n * @zh_CN 值模板参数\r\n * @en_US Node template\r\n */\r\n readonly valueTplContext = input();\r\n /**\r\n * @zh_CN 前置标签\r\n * @en_US Before label\r\n */\r\n readonly before = input<XTemplate>();\r\n /**\r\n * @zh_CN 后置标签\r\n * @en_US After label\r\n */\r\n readonly after = input<XTemplate>();\r\n /**\r\n * @zh_CN 正则验证规则\r\n * @en_US Regular verification rules\r\n */\r\n readonly pattern = input<RegExp | RegExp[]>([]);\r\n /**\r\n * @zh_CN 验证不通过提示文字\r\n * @en_US Verify not pass the prompt text\r\n */\r\n readonly message = input<string | string[]>([]);\r\n /**\r\n * @zh_CN 激活状态\r\n * @en_US Activation state\r\n */\r\n readonly active = model<boolean>(false);\r\n /**\r\n * @zh_CN 输入框点击样式\r\n * @en_US Enter box click style\r\n */\r\n readonly pointer = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 输入验证函数\r\n * @en_US Enter the verification function\r\n */\r\n readonly inputValidator = input<(value: any) => boolean>();\r\n}\r\n","import {\r\n AbstractControl,\r\n ControlValueAccessor,\r\n NG_VALUE_ACCESSOR,\r\n ValidationErrors,\r\n ValidatorFn\r\n} from '@angular/forms';\r\nimport { ChangeDetectorRef, computed, forwardRef, inject, signal, Type } from '@angular/core';\r\nimport { XIsEmpty, XIsUndefined, XComponentConfigKey, XConfigService, XIsNull } from '@ng-nest/ui/core';\r\nimport { XFormControlProp } from './base-form.property';\r\n\r\nexport function XValueAccessor<T>(component: Type<T>) {\r\n return { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => component), multi: true };\r\n}\r\n\r\nexport function XFormInputValidator(func: (value: any) => boolean): ValidatorFn {\r\n return (control: AbstractControl): ValidationErrors | null => {\r\n const invalid = !func(control.value);\r\n return invalid ? { inputValidator: true } : null;\r\n };\r\n}\r\n\r\nexport function XFormControlFunction<C extends XComponentConfigKey>(configName: C) {\r\n return class XFormControlFun extends XFormControlProp implements ControlValueAccessor {\r\n config = inject(XConfigService).getConfigForComponent(configName);\r\n cdr = inject(ChangeDetectorRef);\r\n invalid = computed(() => {\r\n return (\r\n this.validatorComputed() && ((!XIsEmpty(this.value()) && this.invalidPattern()) || this.invalidInputValidator())\r\n );\r\n });\r\n invalidPattern = computed(() => {\r\n const pattern = this.patternComputed();\r\n if (!this.validatorComputed() || XIsUndefined(pattern) || XIsNull(pattern)) return false;\r\n let result = false;\r\n let index = 0;\r\n\r\n if (Array.isArray(pattern)) {\r\n for (const pt of pattern) {\r\n result = !new RegExp(pt).test(this.value() as any);\r\n if (result) {\r\n break;\r\n }\r\n index++;\r\n }\r\n } else {\r\n result = !new RegExp(pattern as RegExp).test(this.value() as any);\r\n }\r\n return result;\r\n });\r\n requiredIsEmpty = computed(() => {\r\n return this.validatorComputed() && this.requiredComputed() && XIsEmpty(this.value());\r\n });\r\n invalidMessage = computed(() => {\r\n if (!this.validatorComputed()) return '';\r\n const message = this.messageComputed();\r\n if (Array.isArray(message)) {\r\n return message.length > this.invalidIndex() ? message[this.invalidIndex()] : '';\r\n } else {\r\n return message as string;\r\n }\r\n });\r\n invalidIndex = computed(() => {\r\n let res = 0;\r\n let index = 0;\r\n const pattern = this.patternComputed();\r\n if (!this.validatorComputed() || XIsUndefined(pattern) || XIsNull(pattern)) return 0;\r\n if (Array.isArray(pattern)) {\r\n for (const pt of pattern) {\r\n const result = !new RegExp(pt).test(this.value() as any);\r\n if (result) {\r\n res = index;\r\n break;\r\n }\r\n index++;\r\n }\r\n return res;\r\n } else {\r\n return 0;\r\n }\r\n });\r\n value = signal<any | undefined>(undefined);\r\n validatorSignal = signal(false);\r\n disabledSignal = signal(false);\r\n requiredSignal = signal(false);\r\n patternSignal = signal<any>([]);\r\n messageSignal = signal<string | string[]>([]);\r\n\r\n requiredComputed = computed(() => this.requiredSignal() || this.required());\r\n disabledComputed = computed(() => this.disabledSignal() || this.disabled());\r\n validatorComputed = computed(() => this.validatorSignal() || this.validator());\r\n patternComputed = computed(() => {\r\n if (XIsEmpty(this.patternSignal())) return this.pattern();\r\n else return this.patternSignal();\r\n });\r\n messageComputed = computed(() => {\r\n if (XIsEmpty(this.messageSignal())) return this.message();\r\n else return this.messageSignal();\r\n });\r\n\r\n invalidInputValidator = signal(false);\r\n onChange!: (value: any) => void;\r\n onTouched!: () => void;\r\n writeValue(value: any): void {\r\n this.value.set(value);\r\n }\r\n registerOnChange(fn: (value: any) => void): void {\r\n this.onChange = fn;\r\n }\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n setDisabledState(disabled: boolean) {\r\n this.disabledSignal.set(disabled);\r\n }\r\n formControlValidator() {\r\n this.validatorSignal.set(true);\r\n }\r\n };\r\n}\r\n","import { NgModule } from '@angular/core';\r\n\r\n@NgModule({\r\n imports: [],\r\n exports: []\r\n})\r\nexport class XBaseFormModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -190,12 +190,7 @@ class XCalendarComponent extends XCalendarProperty {
|
|
|
190
190
|
this.rangeChange.emit(range);
|
|
191
191
|
}
|
|
192
192
|
getDate(date) {
|
|
193
|
-
|
|
194
|
-
return this.data()?.[this.datePipe.transform(date, 'yyyy-MM-dd')];
|
|
195
|
-
}
|
|
196
|
-
else {
|
|
197
|
-
return [];
|
|
198
|
-
}
|
|
193
|
+
return this.data()?.[this.datePipe.transform(date, 'yyyy-MM-dd')];
|
|
199
194
|
}
|
|
200
195
|
getMonth(date) {
|
|
201
196
|
return this.monthData()?.[this.datePipe.transform(date, 'yyyy-MM')];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ng-nest-ui-calendar.mjs","sources":["../../../../lib/ng-nest/ui/calendar/calendar.property.ts","../../../../lib/ng-nest/ui/calendar/calendar.component.ts","../../../../lib/ng-nest/ui/calendar/calendar.component.html","../../../../lib/ng-nest/ui/calendar/calendar.module.ts","../../../../lib/ng-nest/ui/calendar/ng-nest-ui-calendar.ts"],"sourcesContent":["import { XPropertyFunction } from '@ng-nest/ui/core';\r\nimport { Component, TemplateRef, input, output } from '@angular/core';\r\nimport type { XIdentityProperty } from '@ng-nest/ui/core';\r\n\r\n/**\r\n * Calendar\r\n * @selector x-calendar\r\n * @decorator component\r\n */\r\nexport const XCalendarPrefix = 'x-calendar';\r\nconst X_CALENDAR_CONFIG_NAME = 'calendar';\r\n\r\n/**\r\n * Calendar Property\r\n */\r\n@Component({ selector: `${XCalendarPrefix}-property`, template: '' })\r\nexport class XCalendarProperty extends XPropertyFunction(X_CALENDAR_CONFIG_NAME) {\r\n /**\r\n * @zh_CN 事务数据对象\r\n * @en_US Transaction data object\r\n * @example\r\n *\r\n * ```html\r\n * <x-calendar [data]=\"{ '2020-2-22': [{id: '1',label: '1'}], '2020-2-24': [{id: '2, label: '2'}] }\"></x-calendar>\r\n * ```\r\n *\r\n */\r\n readonly data = input<XCalendarData>({});\r\n /**\r\n * @zh_CN 显示模式\r\n * @en_US Display mode\r\n * @example\r\n *\r\n * ```html\r\n * <x-calendar model=\"month\"></x-calendar>\r\n * <x-calendar model=\"year\"></x-calendar>\r\n * ```\r\n *\r\n */\r\n readonly model = input<XCalendarModel>('month');\r\n /**\r\n * @zh_CN 显示类型\r\n * @en_US Display type\r\n * @example\r\n *\r\n * ```html\r\n * <x-calendar displayType=\"calendar\"></x-calendar>\r\n * <x-calendar displayType=\"card\"></x-calendar>\r\n * ```\r\n *\r\n */\r\n readonly displayType = input<XCalendarType>('calendar');\r\n /**\r\n * @zh_CN 头部显示模版\r\n * @en_US Head display template\r\n * @example\r\n *\r\n * ```html\r\n * <x-calendar [headerLeftTemp]=\"headerLeftTemp\"></x-calendar>\r\n * <ng-template #headerLeftTemp> custom title </ng-template>\r\n * ```\r\n *\r\n */\r\n readonly headerLeftTemp = input<TemplateRef<any>>();\r\n /**\r\n * @zh_CN 选择日期变化的事件\r\n * @en_US Select the event of the date change\r\n * @example\r\n *\r\n * ```html\r\n * <x-calendar (dateChange)=\"onDateChange($event)\"></x-calendar>\r\n * ```\r\n *\r\n * ```typescript\r\n * ...\r\n * onDateChange(date: Date) {\r\n * console.log(date)\r\n * }\r\n * ...\r\n * ```\r\n *\r\n */\r\n readonly dateChange = output<Date>();\r\n /**\r\n * @zh_CN 日期范围变化的事件\r\n * @en_US Date range change event\r\n * @example\r\n *\r\n * ```html\r\n * <x-calendar (rangeChange)=\"onRangeChange($event)\"></x-calendar>\r\n * ```\r\n *\r\n * ```typescript\r\n * ...\r\n * onRangeChange(dates: Date[]) {\r\n * console.log(dates)\r\n * }\r\n * ...\r\n * ```\r\n *\r\n */\r\n readonly rangeChange = output<Date[]>();\r\n}\r\n\r\n/**\r\n * @zh_CN Calendar 数据对象\r\n * @en_US Calendar data object\r\n */\r\nexport interface XCalendarData {\r\n /**\r\n * key-value\r\n * { \"2020-2-22\": [{id:\"1\",label:\"1\"}] }\r\n */\r\n [property: string]: XCalendarNode[];\r\n}\r\n\r\n/**\r\n * @zh_CN Calendar 数据对象\r\n * @en_US Calendar data object\r\n */\r\nexport interface XCalendarNode extends XIdentityProperty {}\r\n\r\n/**\r\n * @zh_CN 显示模式\r\n * @en_US Display mode\r\n */\r\nexport type XCalendarModel = 'month' | 'year';\r\n\r\n/**\r\n * @zh_CN 显示类型\r\n * @en_US Display type\r\n */\r\nexport type XCalendarType = 'calendar' | 'card';\r\n","import { Component, ViewEncapsulation, ChangeDetectionStrategy, inject, computed, signal, effect } from '@angular/core';\r\nimport { XCalendarPrefix, XCalendarProperty } from './calendar.property';\r\nimport { XIsEmpty } from '@ng-nest/ui/core';\r\nimport { DatePipe, LowerCasePipe, NgClass, NgTemplateOutlet } from '@angular/common';\r\nimport { XI18nService, zh_CN } from '@ng-nest/ui/i18n';\r\nimport { XLinkComponent } from '@ng-nest/ui/link';\r\nimport { XDatePickerComponent, XPickerDateComponent, XPickerMonthComponent } from '@ng-nest/ui/date-picker';\r\nimport { XButtonComponent, XButtonsComponent } from '@ng-nest/ui/button';\r\nimport { XRadioComponent } from '@ng-nest/ui/radio';\r\nimport { XTooltipDirective } from '@ng-nest/ui/tooltip';\r\nimport { map } from 'rxjs/operators';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { toSignal } from '@angular/core/rxjs-interop';\r\nimport type { XCalendarNode } from './calendar.property';\r\nimport type { XI18nCalendar } from '@ng-nest/ui/i18n';\r\n\r\n@Component({\r\n selector: `${XCalendarPrefix}`,\r\n imports: [\r\n NgClass,\r\n NgTemplateOutlet,\r\n DatePipe,\r\n FormsModule,\r\n XLinkComponent,\r\n XTooltipDirective,\r\n XRadioComponent,\r\n XDatePickerComponent,\r\n XPickerDateComponent,\r\n XPickerMonthComponent,\r\n XButtonComponent,\r\n XButtonsComponent\r\n ],\r\n templateUrl: './calendar.component.html',\r\n styleUrls: ['./calendar.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [DatePipe, LowerCasePipe]\r\n})\r\nexport class XCalendarComponent extends XCalendarProperty {\r\n private datePipe = inject(DatePipe);\r\n private lowerCasePipe = inject(LowerCasePipe);\r\n private i18n = inject(XI18nService);\r\n datetime = signal(new Date());\r\n activatedDate = signal(new Date());\r\n radioDataBase = [\r\n { label: '', id: 'month' },\r\n { label: '', id: 'year' }\r\n ];\r\n modelSignal = signal(this.model());\r\n\r\n locale = toSignal(this.i18n.localeChange.pipe(map((x) => x.calendar as XI18nCalendar)), {\r\n initialValue: zh_CN.calendar\r\n });\r\n radioData = computed(() => {\r\n return this.radioDataBase.map((x) => {\r\n x.label = (this.locale() as any)[x.id];\r\n return x;\r\n });\r\n });\r\n classMap = computed(() => ({\r\n [`${XCalendarPrefix}-${this.displayType()}`]: !XIsEmpty(this.displayType())\r\n }));\r\n monthData = computed(() => {\r\n let dt: { [property: string]: XCalendarNode[] } = {};\r\n for (let key in this.data()) {\r\n let month = this.datePipe.transform(key, 'yyyy-MM') as string;\r\n let value = '';\r\n this.data()[key].forEach((x) => {\r\n value += `${x.id}${x.label} <br/>`;\r\n });\r\n let item = { id: key, label: value };\r\n if (dt[month]) {\r\n dt[month] = [...dt[month], item];\r\n } else {\r\n dt[month] = [item];\r\n }\r\n }\r\n\r\n return dt;\r\n });\r\n\r\n constructor() {\r\n super();\r\n effect(() => {\r\n this.modelSignal.set(this.model());\r\n });\r\n }\r\n\r\n action(next: number) {\r\n let datetime = new Date(this.datetime().getTime());\r\n if (this.modelSignal() === 'month') {\r\n datetime.setMonth(datetime.getMonth() + next);\r\n } else if (this.modelSignal() === 'year') {\r\n datetime.setFullYear(datetime.getFullYear() + next);\r\n }\r\n this.datetime.set(datetime);\r\n }\r\n\r\n getLocaleMonth(date: Date) {\r\n return (this.locale() as any)[this.lowerCasePipe.transform(this.datePipe.transform(date, 'LLLL') as string)];\r\n }\r\n\r\n dateOnChange(date: Date) {\r\n if (this.datePipe.transform(date, 'yyyy-MM-dd') !== this.datePipe.transform(this.activatedDate(), 'yyyy-MM-dd')) {\r\n this.activatedDate.set(date);\r\n this.dateChange.emit(this.activatedDate());\r\n }\r\n }\r\n\r\n rangeOnChange(range: Date[]) {\r\n this.rangeChange.emit(range);\r\n }\r\n\r\n getDate(date: Date): XCalendarNode[] {\r\n if (this.data) {\r\n return this.data()?.[this.datePipe.transform(date, 'yyyy-MM-dd') as string];\r\n } else {\r\n return [];\r\n }\r\n }\r\n\r\n getMonth(date: Date): XCalendarNode[] {\r\n return this.monthData()?.[this.datePipe.transform(date, 'yyyy-MM') as string];\r\n }\r\n}\r\n","<div #calendar class=\"x-calendar\" [ngClass]=\"classMap()\">\r\n <div class=\"x-calendar-header\">\r\n <div class=\"x-calendar-header-left\">\r\n @if (headerLeftTemp()) {\r\n <ng-container *ngTemplateOutlet=\"headerLeftTemp()!\"></ng-container>\r\n }\r\n </div>\r\n <div class=\"x-calendar-header-right\">\r\n <x-date-picker\r\n [(ngModel)]=\"datetime\"\r\n [type]=\"modelSignal()\"\r\n showHeader=\"false\"\r\n [clearable]=\"false\"\r\n ></x-date-picker>\r\n <x-buttons [boxShadow]=\"false\">\r\n <x-button (click)=\"action(-1)\" plain>{{\r\n modelSignal() === 'month' ? locale().lastMonth : locale().lastYear\r\n }}</x-button>\r\n <x-button (click)=\"action(1)\" plain>{{\r\n modelSignal() === 'month' ? locale().nextMonth : locale().nextYear\r\n }}</x-button>\r\n </x-buttons>\r\n <x-radio [data]=\"radioData()\" [(ngModel)]=\"modelSignal\" button></x-radio>\r\n </div>\r\n </div>\r\n <div class=\"x-calendar-body\">\r\n @if (modelSignal() === 'month') {\r\n <x-picker-date\r\n [display]=\"datetime()\"\r\n (modelChange)=\"dateOnChange($event!)\"\r\n (rangeChange)=\"rangeOnChange($event)\"\r\n [dateTemp]=\"dateTemp\"\r\n showHeader=\"false\"\r\n ></x-picker-date>\r\n }\r\n @if (modelSignal() === 'year') {\r\n <x-picker-month\r\n [display]=\"datetime()\"\r\n (modelChange)=\"dateOnChange($event!)\"\r\n (rangeChange)=\"rangeOnChange($event)\"\r\n [monthTemp]=\"monthTemp\"\r\n showHeader=\"false\"\r\n ></x-picker-month>\r\n }\r\n </div>\r\n</div>\r\n\r\n<ng-template #dateTemp let-date=\"date$\">\r\n <div class=\"x-calendar-date\" [class.x-activated]=\"(date | date: 'yyyyMMdd') === (activatedDate() | date: 'yyyyMMdd')\">\r\n <span [title]=\"date | date: 'yyyy-MM-dd'\">{{ date | date: 'd' }}</span>\r\n @if (displayType() === 'calendar') {\r\n <div class=\"x-calendar-date-content\">\r\n @if (getDate(date)) {\r\n <ul>\r\n @for (item of getDate(date); track item.id + item.label) {\r\n <li>\r\n <span [title]=\"item.id + item.label\">{{ item.id }}{{ item.label }}</span>\r\n </li>\r\n }\r\n </ul>\r\n }\r\n </div>\r\n }\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #monthTemp let-date=\"date$\">\r\n <div class=\"x-calendar-month\" [class.x-activated]=\"(date | date: 'yyyyMM') === (activatedDate() | date: 'yyyyMM')\">\r\n <span [title]=\"date | date: 'yyyy-MM'\">{{ getLocaleMonth(date) }}</span>\r\n @if (displayType() === 'calendar') {\r\n <div class=\"x-calendar-month-content\">\r\n @if (getMonth(date)) {\r\n <ul>\r\n @for (item of getMonth(date); track item.id) {\r\n <li>\r\n <x-link x-tooltip [content]=\"item.label\" placement=\"top\">{{ item.id }}</x-link>\r\n </li>\r\n }\r\n </ul>\r\n }\r\n </div>\r\n }\r\n </div>\r\n</ng-template>\r\n","import { NgModule } from '@angular/core';\r\nimport { XCalendarComponent } from './calendar.component';\r\n\r\n@NgModule({\r\n exports: [XCalendarComponent],\r\n imports: [XCalendarComponent]\r\n})\r\nexport class XCalendarModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;AAIA;;;;AAIG;AACI,MAAM,eAAe,GAAG;AAC/B,MAAM,sBAAsB,GAAG,UAAU;AAEzC;;AAEG;MAEU,iBAAkB,SAAQ,iBAAiB,CAAC,sBAAsB,CAAC,CAAA;AADhF,IAAA,WAAA,GAAA;;AAEE;;;;;;;;;AASG;AACM,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAgB,EAAE,CAAC;AACxC;;;;;;;;;;AAUG;AACM,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAiB,OAAO,CAAC;AAC/C;;;;;;;;;;AAUG;AACM,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAgB,UAAU,CAAC;AACvD;;;;;;;;;;AAUG;QACM,IAAc,CAAA,cAAA,GAAG,KAAK,EAAoB;AACnD;;;;;;;;;;;;;;;;;AAiBG;QACM,IAAU,CAAA,UAAA,GAAG,MAAM,EAAQ;AACpC;;;;;;;;;;;;;;;;;AAiBG;QACM,IAAW,CAAA,WAAA,GAAG,MAAM,EAAU;AACxC;iIAtFY,iBAAiB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,+rBADkC,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;;2FACrD,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAD7B,SAAS;mBAAC,EAAE,QAAQ,EAAE,CAAG,EAAA,eAAe,WAAW,EAAE,QAAQ,EAAE,EAAE,EAAE;;;ACuB9D,MAAO,kBAAmB,SAAQ,iBAAiB,CAAA;AA2CvD,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE;AA3CD,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC3B,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;AACrC,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,YAAY,CAAC;AACnC,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;AAC7B,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;AAClC,QAAA,IAAA,CAAA,aAAa,GAAG;AACd,YAAA,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE;AAC1B,YAAA,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM;SACxB;QACD,IAAW,CAAA,WAAA,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QAElC,IAAM,CAAA,MAAA,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAyB,CAAC,CAAC,EAAE;YACtF,YAAY,EAAE,KAAK,CAAC;AACrB,SAAA,CAAC;AACF,QAAA,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAC,MAAK;YACxB,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,KAAI;AAClC,gBAAA,CAAC,CAAC,KAAK,GAAI,IAAI,CAAC,MAAM,EAAU,CAAC,CAAC,CAAC,EAAE,CAAC;AACtC,gBAAA,OAAO,CAAC;AACV,aAAC,CAAC;AACJ,SAAC,CAAC;AACF,QAAA,IAAA,CAAA,QAAQ,GAAG,QAAQ,CAAC,OAAO;AACzB,YAAA,CAAC,GAAG,eAAe,CAAA,CAAA,EAAI,IAAI,CAAC,WAAW,EAAE,CAAA,CAAE,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE;AAC3E,SAAA,CAAC,CAAC;AACH,QAAA,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAC,MAAK;YACxB,IAAI,EAAE,GAA4C,EAAE;YACpD,KAAK,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE;AAC3B,gBAAA,IAAI,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,EAAE,SAAS,CAAW;gBAC7D,IAAI,KAAK,GAAG,EAAE;AACd,gBAAA,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAI;oBAC7B,KAAK,IAAI,CAAG,EAAA,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,KAAK,CAAA,MAAA,CAAQ;AACpC,iBAAC,CAAC;gBACF,IAAI,IAAI,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE;AACpC,gBAAA,IAAI,EAAE,CAAC,KAAK,CAAC,EAAE;AACb,oBAAA,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC;;qBAC3B;AACL,oBAAA,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;;;AAItB,YAAA,OAAO,EAAE;AACX,SAAC,CAAC;QAIA,MAAM,CAAC,MAAK;YACV,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;AACpC,SAAC,CAAC;;AAGJ,IAAA,MAAM,CAAC,IAAY,EAAA;AACjB,QAAA,IAAI,QAAQ,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,CAAC;AAClD,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,KAAK,OAAO,EAAE;YAClC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC;;AACxC,aAAA,IAAI,IAAI,CAAC,WAAW,EAAE,KAAK,MAAM,EAAE;YACxC,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC;;AAErD,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC;;AAG7B,IAAA,cAAc,CAAC,IAAU,EAAA;QACvB,OAAQ,IAAI,CAAC,MAAM,EAAU,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,CAAW,CAAC,CAAC;;AAG9G,IAAA,YAAY,CAAC,IAAU,EAAA;QACrB,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE,YAAY,CAAC,KAAK,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,YAAY,CAAC,EAAE;AAC/G,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC;YAC5B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;;;AAI9C,IAAA,aAAa,CAAC,KAAa,EAAA;AACzB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;;AAG9B,IAAA,OAAO,CAAC,IAAU,EAAA;AAChB,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE;AACb,YAAA,OAAO,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE,YAAY,CAAW,CAAC;;aACtE;AACL,YAAA,OAAO,EAAE;;;AAIb,IAAA,QAAQ,CAAC,IAAU,EAAA;AACjB,QAAA,OAAO,IAAI,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAW,CAAC;;iIApFpE,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,EAFlB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,SAAA,EAAA,CAAC,QAAQ,EAAE,aAAa,CAAC,ECpCtC,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,6jGAoFA,EDjEI,MAAA,EAAA,CAAA,8wQAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,OAAO,EACP,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,gBAAgB,+IAChB,QAAQ,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACR,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACX,cAAc,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACd,iBAAiB,EAAA,QAAA,EAAA,wBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACjB,eAAe,EACf,QAAA,EAAA,SAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,oBAAoB,EACpB,QAAA,EAAA,eAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,oBAAoB,EACpB,QAAA,EAAA,eAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,qBAAqB,EACrB,QAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,gBAAgB,qDAChB,iBAAiB,EAAA,QAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAQR,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAtB9B,SAAS;+BACE,CAAG,EAAA,eAAe,EAAE,EACrB,OAAA,EAAA;wBACP,OAAO;wBACP,gBAAgB;wBAChB,QAAQ;wBACR,WAAW;wBACX,cAAc;wBACd,iBAAiB;wBACjB,eAAe;wBACf,oBAAoB;wBACpB,oBAAoB;wBACpB,qBAAqB;wBACrB,gBAAgB;wBAChB;AACD,qBAAA,EAAA,aAAA,EAGc,iBAAiB,CAAC,IAAI,EAAA,eAAA,EACpB,uBAAuB,CAAC,MAAM,EAAA,SAAA,EACpC,CAAC,QAAQ,EAAE,aAAa,CAAC,EAAA,QAAA,EAAA,6jGAAA,EAAA,MAAA,EAAA,CAAA,8wQAAA,CAAA,EAAA;;;ME7BzB,eAAe,CAAA;iIAAf,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;kIAAf,eAAe,EAAA,OAAA,EAAA,CAFhB,kBAAkB,CAAA,EAAA,OAAA,EAAA,CADlB,kBAAkB,CAAA,EAAA,CAAA,CAAA;AAGjB,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,YAFhB,kBAAkB,CAAA,EAAA,CAAA,CAAA;;2FAEjB,eAAe,EAAA,UAAA,EAAA,CAAA;kBAJ3B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,kBAAkB,CAAC;oBAC7B,OAAO,EAAE,CAAC,kBAAkB;AAC7B,iBAAA;;;ACND;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"ng-nest-ui-calendar.mjs","sources":["../../../../lib/ng-nest/ui/calendar/calendar.property.ts","../../../../lib/ng-nest/ui/calendar/calendar.component.ts","../../../../lib/ng-nest/ui/calendar/calendar.component.html","../../../../lib/ng-nest/ui/calendar/calendar.module.ts","../../../../lib/ng-nest/ui/calendar/ng-nest-ui-calendar.ts"],"sourcesContent":["import { XPropertyFunction } from '@ng-nest/ui/core';\r\nimport { Component, TemplateRef, input, output } from '@angular/core';\r\nimport type { XIdentityProperty } from '@ng-nest/ui/core';\r\n\r\n/**\r\n * Calendar\r\n * @selector x-calendar\r\n * @decorator component\r\n */\r\nexport const XCalendarPrefix = 'x-calendar';\r\nconst X_CALENDAR_CONFIG_NAME = 'calendar';\r\n\r\n/**\r\n * Calendar Property\r\n */\r\n@Component({ selector: `${XCalendarPrefix}-property`, template: '' })\r\nexport class XCalendarProperty extends XPropertyFunction(X_CALENDAR_CONFIG_NAME) {\r\n /**\r\n * @zh_CN 事务数据对象\r\n * @en_US Transaction data object\r\n * @example\r\n *\r\n * ```html\r\n * <x-calendar [data]=\"{ '2020-2-22': [{id: '1',label: '1'}], '2020-2-24': [{id: '2, label: '2'}] }\"></x-calendar>\r\n * ```\r\n *\r\n */\r\n readonly data = input<XCalendarData>({});\r\n /**\r\n * @zh_CN 显示模式\r\n * @en_US Display mode\r\n * @example\r\n *\r\n * ```html\r\n * <x-calendar model=\"month\"></x-calendar>\r\n * <x-calendar model=\"year\"></x-calendar>\r\n * ```\r\n *\r\n */\r\n readonly model = input<XCalendarModel>('month');\r\n /**\r\n * @zh_CN 显示类型\r\n * @en_US Display type\r\n * @example\r\n *\r\n * ```html\r\n * <x-calendar displayType=\"calendar\"></x-calendar>\r\n * <x-calendar displayType=\"card\"></x-calendar>\r\n * ```\r\n *\r\n */\r\n readonly displayType = input<XCalendarType>('calendar');\r\n /**\r\n * @zh_CN 头部显示模版\r\n * @en_US Head display template\r\n * @example\r\n *\r\n * ```html\r\n * <x-calendar [headerLeftTemp]=\"headerLeftTemp\"></x-calendar>\r\n * <ng-template #headerLeftTemp> custom title </ng-template>\r\n * ```\r\n *\r\n */\r\n readonly headerLeftTemp = input<TemplateRef<any>>();\r\n /**\r\n * @zh_CN 选择日期变化的事件\r\n * @en_US Select the event of the date change\r\n * @example\r\n *\r\n * ```html\r\n * <x-calendar (dateChange)=\"onDateChange($event)\"></x-calendar>\r\n * ```\r\n *\r\n * ```typescript\r\n * ...\r\n * onDateChange(date: Date) {\r\n * console.log(date)\r\n * }\r\n * ...\r\n * ```\r\n *\r\n */\r\n readonly dateChange = output<Date>();\r\n /**\r\n * @zh_CN 日期范围变化的事件\r\n * @en_US Date range change event\r\n * @example\r\n *\r\n * ```html\r\n * <x-calendar (rangeChange)=\"onRangeChange($event)\"></x-calendar>\r\n * ```\r\n *\r\n * ```typescript\r\n * ...\r\n * onRangeChange(dates: Date[]) {\r\n * console.log(dates)\r\n * }\r\n * ...\r\n * ```\r\n *\r\n */\r\n readonly rangeChange = output<Date[]>();\r\n}\r\n\r\n/**\r\n * @zh_CN Calendar 数据对象\r\n * @en_US Calendar data object\r\n */\r\nexport interface XCalendarData {\r\n /**\r\n * key-value\r\n * { \"2020-2-22\": [{id:\"1\",label:\"1\"}] }\r\n */\r\n [property: string]: XCalendarNode[];\r\n}\r\n\r\n/**\r\n * @zh_CN Calendar 数据对象\r\n * @en_US Calendar data object\r\n */\r\nexport interface XCalendarNode extends XIdentityProperty {}\r\n\r\n/**\r\n * @zh_CN 显示模式\r\n * @en_US Display mode\r\n */\r\nexport type XCalendarModel = 'month' | 'year';\r\n\r\n/**\r\n * @zh_CN 显示类型\r\n * @en_US Display type\r\n */\r\nexport type XCalendarType = 'calendar' | 'card';\r\n","import { Component, ViewEncapsulation, ChangeDetectionStrategy, inject, computed, signal, effect } from '@angular/core';\r\nimport { XCalendarPrefix, XCalendarProperty } from './calendar.property';\r\nimport { XIsEmpty } from '@ng-nest/ui/core';\r\nimport { DatePipe, LowerCasePipe, NgClass, NgTemplateOutlet } from '@angular/common';\r\nimport { XI18nService, zh_CN } from '@ng-nest/ui/i18n';\r\nimport { XLinkComponent } from '@ng-nest/ui/link';\r\nimport { XDatePickerComponent, XPickerDateComponent, XPickerMonthComponent } from '@ng-nest/ui/date-picker';\r\nimport { XButtonComponent, XButtonsComponent } from '@ng-nest/ui/button';\r\nimport { XRadioComponent } from '@ng-nest/ui/radio';\r\nimport { XTooltipDirective } from '@ng-nest/ui/tooltip';\r\nimport { map } from 'rxjs/operators';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { toSignal } from '@angular/core/rxjs-interop';\r\nimport type { XCalendarNode } from './calendar.property';\r\nimport type { XI18nCalendar } from '@ng-nest/ui/i18n';\r\n\r\n@Component({\r\n selector: `${XCalendarPrefix}`,\r\n imports: [\r\n NgClass,\r\n NgTemplateOutlet,\r\n DatePipe,\r\n FormsModule,\r\n XLinkComponent,\r\n XTooltipDirective,\r\n XRadioComponent,\r\n XDatePickerComponent,\r\n XPickerDateComponent,\r\n XPickerMonthComponent,\r\n XButtonComponent,\r\n XButtonsComponent\r\n ],\r\n templateUrl: './calendar.component.html',\r\n styleUrls: ['./calendar.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [DatePipe, LowerCasePipe]\r\n})\r\nexport class XCalendarComponent extends XCalendarProperty {\r\n private datePipe = inject(DatePipe);\r\n private lowerCasePipe = inject(LowerCasePipe);\r\n private i18n = inject(XI18nService);\r\n datetime = signal(new Date());\r\n activatedDate = signal(new Date());\r\n radioDataBase = [\r\n { label: '', id: 'month' },\r\n { label: '', id: 'year' }\r\n ];\r\n modelSignal = signal(this.model());\r\n\r\n locale = toSignal(this.i18n.localeChange.pipe(map((x) => x.calendar as XI18nCalendar)), {\r\n initialValue: zh_CN.calendar\r\n });\r\n radioData = computed(() => {\r\n return this.radioDataBase.map((x) => {\r\n x.label = (this.locale() as any)[x.id];\r\n return x;\r\n });\r\n });\r\n classMap = computed(() => ({\r\n [`${XCalendarPrefix}-${this.displayType()}`]: !XIsEmpty(this.displayType())\r\n }));\r\n monthData = computed(() => {\r\n let dt: { [property: string]: XCalendarNode[] } = {};\r\n for (let key in this.data()) {\r\n let month = this.datePipe.transform(key, 'yyyy-MM') as string;\r\n let value = '';\r\n this.data()[key].forEach((x) => {\r\n value += `${x.id}${x.label} <br/>`;\r\n });\r\n let item = { id: key, label: value };\r\n if (dt[month]) {\r\n dt[month] = [...dt[month], item];\r\n } else {\r\n dt[month] = [item];\r\n }\r\n }\r\n\r\n return dt;\r\n });\r\n\r\n constructor() {\r\n super();\r\n effect(() => {\r\n this.modelSignal.set(this.model());\r\n });\r\n }\r\n\r\n action(next: number) {\r\n let datetime = new Date(this.datetime().getTime());\r\n if (this.modelSignal() === 'month') {\r\n datetime.setMonth(datetime.getMonth() + next);\r\n } else if (this.modelSignal() === 'year') {\r\n datetime.setFullYear(datetime.getFullYear() + next);\r\n }\r\n this.datetime.set(datetime);\r\n }\r\n\r\n getLocaleMonth(date: Date) {\r\n return (this.locale() as any)[this.lowerCasePipe.transform(this.datePipe.transform(date, 'LLLL') as string)];\r\n }\r\n\r\n dateOnChange(date: Date) {\r\n if (this.datePipe.transform(date, 'yyyy-MM-dd') !== this.datePipe.transform(this.activatedDate(), 'yyyy-MM-dd')) {\r\n this.activatedDate.set(date);\r\n this.dateChange.emit(this.activatedDate());\r\n }\r\n }\r\n\r\n rangeOnChange(range: Date[]) {\r\n this.rangeChange.emit(range);\r\n }\r\n\r\n getDate(date: Date): XCalendarNode[] {\r\n return this.data()?.[this.datePipe.transform(date, 'yyyy-MM-dd') as string];\r\n }\r\n\r\n getMonth(date: Date): XCalendarNode[] {\r\n return this.monthData()?.[this.datePipe.transform(date, 'yyyy-MM') as string];\r\n }\r\n}\r\n","<div #calendar class=\"x-calendar\" [ngClass]=\"classMap()\">\r\n <div class=\"x-calendar-header\">\r\n <div class=\"x-calendar-header-left\">\r\n @if (headerLeftTemp()) {\r\n <ng-container *ngTemplateOutlet=\"headerLeftTemp()!\"></ng-container>\r\n }\r\n </div>\r\n <div class=\"x-calendar-header-right\">\r\n <x-date-picker\r\n [(ngModel)]=\"datetime\"\r\n [type]=\"modelSignal()\"\r\n showHeader=\"false\"\r\n [clearable]=\"false\"\r\n ></x-date-picker>\r\n <x-buttons [boxShadow]=\"false\">\r\n <x-button (click)=\"action(-1)\" plain>{{\r\n modelSignal() === 'month' ? locale().lastMonth : locale().lastYear\r\n }}</x-button>\r\n <x-button (click)=\"action(1)\" plain>{{\r\n modelSignal() === 'month' ? locale().nextMonth : locale().nextYear\r\n }}</x-button>\r\n </x-buttons>\r\n <x-radio [data]=\"radioData()\" [(ngModel)]=\"modelSignal\" button></x-radio>\r\n </div>\r\n </div>\r\n <div class=\"x-calendar-body\">\r\n @if (modelSignal() === 'month') {\r\n <x-picker-date\r\n [display]=\"datetime()\"\r\n (modelChange)=\"dateOnChange($event!)\"\r\n (rangeChange)=\"rangeOnChange($event)\"\r\n [dateTemp]=\"dateTemp\"\r\n showHeader=\"false\"\r\n ></x-picker-date>\r\n }\r\n @if (modelSignal() === 'year') {\r\n <x-picker-month\r\n [display]=\"datetime()\"\r\n (modelChange)=\"dateOnChange($event!)\"\r\n (rangeChange)=\"rangeOnChange($event)\"\r\n [monthTemp]=\"monthTemp\"\r\n showHeader=\"false\"\r\n ></x-picker-month>\r\n }\r\n </div>\r\n</div>\r\n\r\n<ng-template #dateTemp let-date=\"date$\">\r\n <div class=\"x-calendar-date\" [class.x-activated]=\"(date | date: 'yyyyMMdd') === (activatedDate() | date: 'yyyyMMdd')\">\r\n <span [title]=\"date | date: 'yyyy-MM-dd'\">{{ date | date: 'd' }}</span>\r\n @if (displayType() === 'calendar') {\r\n <div class=\"x-calendar-date-content\">\r\n @if (getDate(date)) {\r\n <ul>\r\n @for (item of getDate(date); track item.id + item.label) {\r\n <li>\r\n <span [title]=\"item.id + item.label\">{{ item.id }}{{ item.label }}</span>\r\n </li>\r\n }\r\n </ul>\r\n }\r\n </div>\r\n }\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #monthTemp let-date=\"date$\">\r\n <div class=\"x-calendar-month\" [class.x-activated]=\"(date | date: 'yyyyMM') === (activatedDate() | date: 'yyyyMM')\">\r\n <span [title]=\"date | date: 'yyyy-MM'\">{{ getLocaleMonth(date) }}</span>\r\n @if (displayType() === 'calendar') {\r\n <div class=\"x-calendar-month-content\">\r\n @if (getMonth(date)) {\r\n <ul>\r\n @for (item of getMonth(date); track item.id) {\r\n <li>\r\n <x-link x-tooltip [content]=\"item.label\" placement=\"top\">{{ item.id }}</x-link>\r\n </li>\r\n }\r\n </ul>\r\n }\r\n </div>\r\n }\r\n </div>\r\n</ng-template>\r\n","import { NgModule } from '@angular/core';\r\nimport { XCalendarComponent } from './calendar.component';\r\n\r\n@NgModule({\r\n exports: [XCalendarComponent],\r\n imports: [XCalendarComponent]\r\n})\r\nexport class XCalendarModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;AAIA;;;;AAIG;AACI,MAAM,eAAe,GAAG;AAC/B,MAAM,sBAAsB,GAAG,UAAU;AAEzC;;AAEG;MAEU,iBAAkB,SAAQ,iBAAiB,CAAC,sBAAsB,CAAC,CAAA;AADhF,IAAA,WAAA,GAAA;;AAEE;;;;;;;;;AASG;AACM,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAgB,EAAE,CAAC;AACxC;;;;;;;;;;AAUG;AACM,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAiB,OAAO,CAAC;AAC/C;;;;;;;;;;AAUG;AACM,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAgB,UAAU,CAAC;AACvD;;;;;;;;;;AAUG;QACM,IAAc,CAAA,cAAA,GAAG,KAAK,EAAoB;AACnD;;;;;;;;;;;;;;;;;AAiBG;QACM,IAAU,CAAA,UAAA,GAAG,MAAM,EAAQ;AACpC;;;;;;;;;;;;;;;;;AAiBG;QACM,IAAW,CAAA,WAAA,GAAG,MAAM,EAAU;AACxC;iIAtFY,iBAAiB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,+rBADkC,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;;2FACrD,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAD7B,SAAS;mBAAC,EAAE,QAAQ,EAAE,CAAG,EAAA,eAAe,WAAW,EAAE,QAAQ,EAAE,EAAE,EAAE;;;ACuB9D,MAAO,kBAAmB,SAAQ,iBAAiB,CAAA;AA2CvD,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE;AA3CD,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC3B,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;AACrC,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,YAAY,CAAC;AACnC,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;AAC7B,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;AAClC,QAAA,IAAA,CAAA,aAAa,GAAG;AACd,YAAA,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE;AAC1B,YAAA,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM;SACxB;QACD,IAAW,CAAA,WAAA,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QAElC,IAAM,CAAA,MAAA,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAyB,CAAC,CAAC,EAAE;YACtF,YAAY,EAAE,KAAK,CAAC;AACrB,SAAA,CAAC;AACF,QAAA,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAC,MAAK;YACxB,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,KAAI;AAClC,gBAAA,CAAC,CAAC,KAAK,GAAI,IAAI,CAAC,MAAM,EAAU,CAAC,CAAC,CAAC,EAAE,CAAC;AACtC,gBAAA,OAAO,CAAC;AACV,aAAC,CAAC;AACJ,SAAC,CAAC;AACF,QAAA,IAAA,CAAA,QAAQ,GAAG,QAAQ,CAAC,OAAO;AACzB,YAAA,CAAC,GAAG,eAAe,CAAA,CAAA,EAAI,IAAI,CAAC,WAAW,EAAE,CAAA,CAAE,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE;AAC3E,SAAA,CAAC,CAAC;AACH,QAAA,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAC,MAAK;YACxB,IAAI,EAAE,GAA4C,EAAE;YACpD,KAAK,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE;AAC3B,gBAAA,IAAI,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,EAAE,SAAS,CAAW;gBAC7D,IAAI,KAAK,GAAG,EAAE;AACd,gBAAA,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAI;oBAC7B,KAAK,IAAI,CAAG,EAAA,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,KAAK,CAAA,MAAA,CAAQ;AACpC,iBAAC,CAAC;gBACF,IAAI,IAAI,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE;AACpC,gBAAA,IAAI,EAAE,CAAC,KAAK,CAAC,EAAE;AACb,oBAAA,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC;;qBAC3B;AACL,oBAAA,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;;;AAItB,YAAA,OAAO,EAAE;AACX,SAAC,CAAC;QAIA,MAAM,CAAC,MAAK;YACV,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;AACpC,SAAC,CAAC;;AAGJ,IAAA,MAAM,CAAC,IAAY,EAAA;AACjB,QAAA,IAAI,QAAQ,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,CAAC;AAClD,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,KAAK,OAAO,EAAE;YAClC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC;;AACxC,aAAA,IAAI,IAAI,CAAC,WAAW,EAAE,KAAK,MAAM,EAAE;YACxC,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC;;AAErD,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC;;AAG7B,IAAA,cAAc,CAAC,IAAU,EAAA;QACvB,OAAQ,IAAI,CAAC,MAAM,EAAU,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,CAAW,CAAC,CAAC;;AAG9G,IAAA,YAAY,CAAC,IAAU,EAAA;QACrB,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE,YAAY,CAAC,KAAK,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,YAAY,CAAC,EAAE;AAC/G,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC;YAC5B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;;;AAI9C,IAAA,aAAa,CAAC,KAAa,EAAA;AACzB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;;AAG9B,IAAA,OAAO,CAAC,IAAU,EAAA;AAChB,QAAA,OAAO,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE,YAAY,CAAW,CAAC;;AAG7E,IAAA,QAAQ,CAAC,IAAU,EAAA;AACjB,QAAA,OAAO,IAAI,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAW,CAAC;;iIAhFpE,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,EAFlB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,SAAA,EAAA,CAAC,QAAQ,EAAE,aAAa,CAAC,ECpCtC,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,6jGAoFA,EDjEI,MAAA,EAAA,CAAA,8wQAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,OAAO,EACP,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,gBAAgB,+IAChB,QAAQ,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACR,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACX,cAAc,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACd,iBAAiB,EAAA,QAAA,EAAA,wBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACjB,eAAe,EACf,QAAA,EAAA,SAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,oBAAoB,EACpB,QAAA,EAAA,eAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,oBAAoB,EACpB,QAAA,EAAA,eAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,qBAAqB,EACrB,QAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,gBAAgB,qDAChB,iBAAiB,EAAA,QAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAQR,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAtB9B,SAAS;+BACE,CAAG,EAAA,eAAe,EAAE,EACrB,OAAA,EAAA;wBACP,OAAO;wBACP,gBAAgB;wBAChB,QAAQ;wBACR,WAAW;wBACX,cAAc;wBACd,iBAAiB;wBACjB,eAAe;wBACf,oBAAoB;wBACpB,oBAAoB;wBACpB,qBAAqB;wBACrB,gBAAgB;wBAChB;AACD,qBAAA,EAAA,aAAA,EAGc,iBAAiB,CAAC,IAAI,EAAA,eAAA,EACpB,uBAAuB,CAAC,MAAM,EAAA,SAAA,EACpC,CAAC,QAAQ,EAAE,aAAa,CAAC,EAAA,QAAA,EAAA,6jGAAA,EAAA,MAAA,EAAA,CAAA,8wQAAA,CAAA,EAAA;;;ME7BzB,eAAe,CAAA;iIAAf,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;kIAAf,eAAe,EAAA,OAAA,EAAA,CAFhB,kBAAkB,CAAA,EAAA,OAAA,EAAA,CADlB,kBAAkB,CAAA,EAAA,CAAA,CAAA;AAGjB,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,YAFhB,kBAAkB,CAAA,EAAA,CAAA,CAAA;;2FAEjB,eAAe,EAAA,UAAA,EAAA,CAAA;kBAJ3B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,kBAAkB,CAAC;oBAC7B,OAAO,EAAE,CAAC,kBAAkB;AAC7B,iBAAA;;;ACND;;AAEG;;;;"}
|
|
@@ -403,16 +403,12 @@ class XCarouselPanelComponent extends XCarouselPanelProperty {
|
|
|
403
403
|
});
|
|
404
404
|
}
|
|
405
405
|
setActive() {
|
|
406
|
-
if (!this.carousel)
|
|
407
|
-
return;
|
|
408
406
|
const isActive = this.carousel.active() === this.index();
|
|
409
407
|
if (this.activeSignal() !== isActive) {
|
|
410
408
|
this.activeSignal.set(isActive);
|
|
411
409
|
}
|
|
412
410
|
}
|
|
413
411
|
setStyles() {
|
|
414
|
-
if (!this.carousel)
|
|
415
|
-
return;
|
|
416
412
|
const width = this.elementRef.nativeElement.offsetWidth;
|
|
417
413
|
const height = this.elementRef.nativeElement.offsetHeight;
|
|
418
414
|
let offset = this.carousel.active() - this.index();
|
|
@@ -446,8 +442,6 @@ class XCarouselPanelComponent extends XCarouselPanelProperty {
|
|
|
446
442
|
this.carousel.card());
|
|
447
443
|
}
|
|
448
444
|
calcCardTranslate(index, activeIndex) {
|
|
449
|
-
if (!this.carousel)
|
|
450
|
-
return;
|
|
451
445
|
const parentWidth = this.carousel.carousel().nativeElement.offsetWidth;
|
|
452
446
|
let offset = index - activeIndex;
|
|
453
447
|
let activeFirstOrLast = this.carousel.start() > 1 && this.carousel.start() === Math.abs(offset);
|
|
@@ -468,11 +462,9 @@ class XCarouselPanelComponent extends XCarouselPanelProperty {
|
|
|
468
462
|
this.setStyles();
|
|
469
463
|
}
|
|
470
464
|
panelClick() {
|
|
471
|
-
if (
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
this.carousel.autoplay() && this.carousel.resetInterval();
|
|
475
|
-
this.carousel.setActiveItem(this.index());
|
|
465
|
+
if (this.carousel?.card() && this.carousel?.active() !== this.index()) {
|
|
466
|
+
this.carousel?.autoplay() && this.carousel?.resetInterval();
|
|
467
|
+
this.carousel?.setActiveItem(this.index());
|
|
476
468
|
}
|
|
477
469
|
}
|
|
478
470
|
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.1", ngImport: i0, type: XCarouselPanelComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ng-nest-ui-carousel.mjs","sources":["../../../../lib/ng-nest/ui/carousel/carousel.property.ts","../../../../lib/ng-nest/ui/carousel/carousel.component.ts","../../../../lib/ng-nest/ui/carousel/carousel.component.html","../../../../lib/ng-nest/ui/carousel/carousel-panel.component.ts","../../../../lib/ng-nest/ui/carousel/carousel-panel.component.html","../../../../lib/ng-nest/ui/carousel/carousel.module.ts","../../../../lib/ng-nest/ui/carousel/ng-nest-ui-carousel.ts"],"sourcesContent":["import { XProperty, XPropertyFunction, XToNumber, XToCssPixelValue, XToBoolean } from '@ng-nest/ui/core';\r\nimport { Component, input, model } from '@angular/core';\r\nimport type { XNumber, XBoolean, XShadow, XDisplayDirection, XTrigger } from '@ng-nest/ui/core';\r\n\r\n/**\r\n * Carousel\r\n * @selector x-carousel\r\n * @decorator component\r\n */\r\nexport const XCarouselPrefix = 'x-carousel';\r\nconst X_CAROUSEL_CONFIG_NAME = 'carousel';\r\n\r\n/**\r\n * Carousel Property\r\n */\r\n@Component({ selector: `${XCarouselPrefix}-property`, template: '' })\r\nexport class XCarouselProperty extends XPropertyFunction(X_CAROUSEL_CONFIG_NAME) {\r\n /**\r\n * @zh_CN 当前激活的幻灯片索引\r\n * @en_US Index of the currently active slide\r\n * @example\r\n *\r\n * ```html\r\n * <x-carousel [active]=\"1\" (activeChange)=\"activeChange($event)\">\r\n * <x-carousel-panel>0</x-carousel-panel>\r\n * <x-carousel-panel>1</x-carousel-panel>\r\n * </x-carousel>\r\n * <x-carousel [(active)]=\"active\">\r\n * <x-carousel-panel>0</x-carousel-panel>\r\n * <x-carousel-panel>1</x-carousel-panel>\r\n * </x-carousel>\r\n * ```\r\n *\r\n * ```typescript\r\n * active = signal(1)\r\n * activeChange(active: number) {\r\n * console.log(active)\r\n * }\r\n * ```\r\n *\r\n */\r\n readonly active = model<number>(0);\r\n /**\r\n * @zh_CN 幻灯片高度\r\n * @en_US Slide height\r\n * @example\r\n *\r\n * ```html\r\n * <x-carousel height=\"18rem\">\r\n * <x-carousel-panel>0</x-carousel-panel>\r\n * <x-carousel-panel>1</x-carousel-panel>\r\n * </x-carousel>\r\n * ```\r\n *\r\n */\r\n readonly height = input<string, XNumber>(this.config?.height ?? '15rem', { transform: XToCssPixelValue });\r\n /**\r\n * @zh_CN 切换器触发方式\r\n * @en_US Switcher trigger method\r\n * @example\r\n *\r\n * ```html\r\n * <x-carousel trigger=\"click\">\r\n * <x-carousel-panel>0</x-carousel-panel>\r\n * <x-carousel-panel>1</x-carousel-panel>\r\n * </x-carousel>\r\n * ```\r\n *\r\n */\r\n readonly trigger = input<XCarouselTrigger>(this.config?.trigger ?? 'hover');\r\n /**\r\n * @zh_CN 箭头显示隐藏方式\r\n * @en_US Arrow shows how to hide\r\n * @example\r\n *\r\n * ```html\r\n * <x-carousel arrow=\"always\">\r\n * <x-carousel-panel>0</x-carousel-panel>\r\n * <x-carousel-panel>1</x-carousel-panel>\r\n * </x-carousel>\r\n * <x-carousel arrow=\"never\">\r\n * <x-carousel-panel>0</x-carousel-panel>\r\n * <x-carousel-panel>1</x-carousel-panel>\r\n * </x-carousel>\r\n * ```\r\n *\r\n */\r\n readonly arrow = input<XCarouselArrow>(this.config?.arrow ?? 'hover');\r\n /**\r\n * @zh_CN 幻灯片轮播方向\r\n * @en_US Slide rotation direction\r\n * @example\r\n *\r\n * ```html\r\n * <x-carousel direction=\"vertical\">\r\n * <x-carousel-panel>0</x-carousel-panel>\r\n * <x-carousel-panel>1</x-carousel-panel>\r\n * </x-carousel>\r\n * ```\r\n *\r\n */\r\n readonly direction = input<XCarouselDirection>(this.config?.direction ?? 'horizontal');\r\n /**\r\n * @zh_CN 自动切换\r\n * @en_US Automatic switching\r\n * @example\r\n *\r\n * ```html\r\n * <x-carousel autoplay=\"false\">\r\n * <x-carousel-panel>0</x-carousel-panel>\r\n * <x-carousel-panel>1</x-carousel-panel>\r\n * </x-carousel>\r\n * ```\r\n *\r\n */\r\n readonly autoplay = input<boolean, XBoolean>(true, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 自动切换时间间隔,ms\r\n * @en_US Automatic switching time interval. ms\r\n * @example\r\n *\r\n * ```html\r\n * <x-carousel interval=\"5000\">\r\n * <x-carousel-panel>0</x-carousel-panel>\r\n * <x-carousel-panel>1</x-carousel-panel>\r\n * </x-carousel>\r\n * ```\r\n *\r\n */\r\n readonly interval = input<number, XNumber>(3000, { transform: XToNumber });\r\n /**\r\n * @zh_CN 切换器是否显示在外面\r\n * @en_US Whether the switcher is displayed outside\r\n * @example\r\n *\r\n * ```html\r\n * <x-carousel outside>\r\n * <x-carousel-panel>0</x-carousel-panel>\r\n * <x-carousel-panel>1</x-carousel-panel>\r\n * </x-carousel>\r\n * ```\r\n *\r\n */\r\n readonly outside = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 是否以卡片的方式显示幻灯片\r\n * @en_US Whether to display the slideshow as a card\r\n * @example\r\n *\r\n * ```html\r\n * <x-carousel card>\r\n * <x-carousel-panel>0</x-carousel-panel>\r\n * <x-carousel-panel>1</x-carousel-panel>\r\n * </x-carousel>\r\n * ```\r\n *\r\n */\r\n readonly card = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 显示文字\r\n * @en_US Display text\r\n * @example\r\n *\r\n * ```html\r\n * <x-carousel text=\"text info\">\r\n * <x-carousel-panel>0</x-carousel-panel>\r\n * <x-carousel-panel>1</x-carousel-panel>\r\n * </x-carousel>\r\n * ```\r\n *\r\n */\r\n readonly text = input<string>('');\r\n /**\r\n * @zh_CN 显示进度条\r\n * @en_US Show progress\r\n * @example\r\n *\r\n * ```html\r\n * <x-carousel progress>\r\n * <x-carousel-panel>0</x-carousel-panel>\r\n * <x-carousel-panel>1</x-carousel-panel>\r\n * </x-carousel>\r\n * ```\r\n *\r\n */\r\n readonly progress = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 进度条颜色\r\n * @en_US Progress color\r\n * @example\r\n *\r\n * ```html\r\n * <x-carousel progress progressColor=\"blue\">\r\n * <x-carousel-panel>0</x-carousel-panel>\r\n * <x-carousel-panel>1</x-carousel-panel>\r\n * </x-carousel>\r\n * ```\r\n *\r\n */\r\n readonly progressColor = input<string>('');\r\n /**\r\n * @zh_CN 显示当前页面\r\n * @en_US Show current page\r\n * @example\r\n *\r\n * ```html\r\n * <x-carousel current>\r\n * <x-carousel-panel>0</x-carousel-panel>\r\n * <x-carousel-panel>1</x-carousel-panel>\r\n * </x-carousel>\r\n * ```\r\n *\r\n */\r\n readonly current = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n}\r\n\r\n/**\r\n * @zh_CN 指示器切换方式\r\n * @en_US Indicator switching method\r\n */\r\nexport type XCarouselTrigger = XTrigger;\r\n\r\n/**\r\n * @zh_CN 切换箭头显示方式\r\n * @en_US Toggle arrow display\r\n */\r\nexport type XCarouselArrow = XShadow;\r\n\r\n/**\r\n * @zh_CN 走马灯展示的方向\r\n * @en_US The direction of the revolving lantern\r\n */\r\nexport type XCarouselDirection = XDisplayDirection;\r\n\r\n/**\r\n * Carousel Panel\r\n * @selector x-carousel-panel\r\n * @decorator component\r\n */\r\nexport const XCarouselPanelPrefix = 'x-carousel-panel';\r\n\r\n/**\r\n * Carousel Panel Property\r\n */\r\n@Component({ selector: `${XCarouselPanelPrefix}-property`, template: '' })\r\nexport class XCarouselPanelProperty extends XProperty {\r\n /**\r\n * @zh_CN 激活当前幻灯片\r\n * @en_US Activate the current slide\r\n * @example\r\n *\r\n * ```html\r\n * <x-carousel>\r\n * <x-carousel-panel>0</x-carousel-panel>\r\n * <x-carousel-panel active>1</x-carousel-panel>\r\n * </x-carousel>\r\n * ```\r\n *\r\n */\r\n readonly active = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n}\r\n","import {\r\n Component,\r\n ViewEncapsulation,\r\n ElementRef,\r\n ChangeDetectionStrategy,\r\n SimpleChanges,\r\n PLATFORM_ID,\r\n inject,\r\n computed,\r\n viewChild,\r\n signal\r\n} from '@angular/core';\r\nimport { XCarouselPrefix, XCarouselProperty } from './carousel.property';\r\nimport { XIsUndefined, XIsChange, XIsEmpty, XResize } from '@ng-nest/ui/core';\r\nimport { Subject, Subscription, interval } from 'rxjs';\r\nimport { takeUntil, debounceTime, tap } from 'rxjs/operators';\r\nimport { NgClass, isPlatformBrowser } from '@angular/common';\r\nimport { XButtonComponent } from '@ng-nest/ui/button';\r\nimport { XProgressComponent } from '@ng-nest/ui/progress';\r\nimport type { XResizeObserver } from '@ng-nest/ui/core';\r\n\r\n@Component({\r\n selector: `${XCarouselPrefix}`,\r\n imports: [NgClass, XButtonComponent, XProgressComponent],\r\n templateUrl: './carousel.component.html',\r\n styleUrls: ['./carousel.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XCarouselComponent extends XCarouselProperty {\r\n carousel = viewChild.required<ElementRef<HTMLElement>>('carousel');\r\n content = viewChild.required<ElementRef<HTMLElement>>('content');\r\n start = signal(-1);\r\n before = signal(-1);\r\n timer?: Subscription;\r\n precentTimer?: Subscription;\r\n platformId = inject(PLATFORM_ID);\r\n isBrowser = isPlatformBrowser(this.platformId);\r\n percent = signal(0);\r\n count = signal(0);\r\n panels = signal<object[]>([]);\r\n private unSubject = new Subject<void>();\r\n private resizeObserver!: XResizeObserver;\r\n\r\n classMap = computed(() => ({\r\n [`${XCarouselPrefix}-${this.direction()}`]: !XIsEmpty(this.direction())\r\n }));\r\n\r\n updatePanel = new Subject<void>();\r\n\r\n page = computed(() => this.active() + 1);\r\n\r\n ngAfterViewInit() {\r\n this.autoplay() && this.resetInterval();\r\n XResize(this.content().nativeElement)\r\n .pipe(\r\n debounceTime(30),\r\n tap(({ resizeObserver }) => {\r\n this.resizeObserver = resizeObserver;\r\n this.updatePanel.next();\r\n }),\r\n takeUntil(this.unSubject)\r\n )\r\n .subscribe();\r\n }\r\n\r\n ngOnChanges(simples: SimpleChanges): void {\r\n const { active, interval } = simples;\r\n XIsChange(interval) && this.autoplay() && this.resetInterval();\r\n XIsChange(active) && this.setActiveItem(this.active());\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.timer?.unsubscribe();\r\n this.precentTimer?.unsubscribe();\r\n this.unSubject.next();\r\n this.unSubject.complete();\r\n this.resizeObserver?.disconnect();\r\n this.updatePanel.complete();\r\n }\r\n\r\n action(index: number, increase: number, event?: string): void {\r\n if (!XIsUndefined(event) && this.trigger() !== event) return;\r\n this.autoplay() && this.resetInterval();\r\n this.setActiveItem(index + increase);\r\n }\r\n\r\n resetInterval(): void {\r\n if (!this.isBrowser) return;\r\n this.timer?.unsubscribe();\r\n if (this.progress()) {\r\n this.precentTimer?.unsubscribe();\r\n this.percent.set(0);\r\n const js = this.interval() / 100;\r\n this.precentTimer = interval(js)\r\n .pipe(takeUntil(this.unSubject))\r\n .subscribe(() => {\r\n this.percent.update((x) => x + 1);\r\n });\r\n }\r\n this.timer = interval(this.interval())\r\n .pipe(takeUntil(this.unSubject))\r\n .subscribe(() => {\r\n this.percent.set(0);\r\n this.setActiveItem(this.active() + 1);\r\n });\r\n }\r\n\r\n setActiveItem(index: number): void {\r\n if (this.start() === -1) return;\r\n this.before.set(this.active());\r\n const nextValue = index > this.start() ? 0 : index < 0 ? this.start() : index;\r\n this.active.set(nextValue);\r\n this.updatePanel.next();\r\n }\r\n\r\n getActivated(index: number) {\r\n return this.active() === index;\r\n }\r\n}\r\n","<div\r\n #carousel\r\n class=\"x-carousel\"\r\n [ngClass]=\"classMap()\"\r\n [class.x-carousel-arrow-always]=\"arrow() === 'always'\"\r\n [class.x-carousel-has-current]=\"current()\"\r\n [class.x-carousel-indicator-outside]=\"outside() || card()\"\r\n>\r\n <div #content class=\"x-carousel-content\" [style.height]=\"height()\">\r\n @if (arrow() !== 'never' && direction() !== 'vertical') {\r\n <x-button class=\"arrow-left\" icon=\"fto-chevron-left\" (click)=\"action(active(), -1)\"></x-button>\r\n <x-button class=\"arrow-right\" icon=\"fto-chevron-right\" (click)=\"action(active(), 1)\"></x-button>\r\n }\r\n <ng-content></ng-content>\r\n @if (text()) {\r\n <div class=\"x-carousel-text\">{{ text() }}</div>\r\n }\r\n @if (current()) {\r\n <div class=\"x-carousel-current\">\r\n <span class=\"x-carousel-active\">{{ page() }}</span> /\r\n <span class=\"x-carousel-count\">{{ count() }}</span>\r\n </div>\r\n }\r\n @if (progress()) {\r\n <div class=\"x-carousel-progress\">\r\n <x-progress [percent]=\"percent()\" [color]=\"progressColor()\" [info]=\"false\" height=\"0.325rem\"></x-progress>\r\n </div>\r\n }\r\n </div>\r\n <ul class=\"x-carousel-indicator\">\r\n @for (panel of panels(); track $index) {\r\n <li\r\n [class.x-activated]=\"getActivated($index)\"\r\n (click)=\"action($index, 0, 'click')\"\r\n (mouseenter)=\"action($index, 0, 'hover')\"\r\n >\r\n <x-button type=\"text\"></x-button>\r\n </li>\r\n }\r\n </ul>\r\n</div>\r\n","import {\r\n Component,\r\n OnInit,\r\n ViewEncapsulation,\r\n ElementRef,\r\n ChangeDetectionStrategy,\r\n inject,\r\n OnDestroy,\r\n signal,\r\n HostBinding,\r\n computed\r\n} from '@angular/core';\r\nimport { XCarouselPanelPrefix, XCarouselPanelProperty } from './carousel.property';\r\nimport { XDropAnimation } from '@ng-nest/ui/core';\r\nimport { XCarouselComponent } from './carousel.component';\r\nimport { Subject, takeUntil } from 'rxjs';\r\n\r\n@Component({\r\n selector: `${XCarouselPanelPrefix}`,\r\n templateUrl: './carousel-panel.component.html',\r\n styleUrls: ['./carousel-panel.component.scss'],\r\n animations: [XDropAnimation],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XCarouselPanelComponent extends XCarouselPanelProperty implements OnInit, OnDestroy {\r\n @HostBinding('class.x-carousel-card') get getCard() {\r\n return !!this.carousel?.card();\r\n }\r\n @HostBinding('class.x-activated') get getActivated() {\r\n return this.activeSignal();\r\n }\r\n @HostBinding('class.x-carousel-in-stage') get getInStage() {\r\n return this.inStage();\r\n }\r\n @HostBinding('class.x-carousel-animating') get getAnimating() {\r\n return this.animating();\r\n }\r\n @HostBinding('style.transform') get getTransform() {\r\n return `${this.translateType()}(${this.translate()}px) scale(${this.scale()})`;\r\n }\r\n index = signal(0);\r\n animating = signal(false);\r\n preTranslate!: number;\r\n cardScale = signal(0.83);\r\n scale = signal(1);\r\n translate = signal(0);\r\n translateType = signal('translateX');\r\n inStage = signal(false);\r\n unSubject = new Subject<void>();\r\n carousel = inject(XCarouselComponent, { optional: true, host: true });\r\n activeSignal = signal(this.active());\r\n card = computed(() => this.carousel?.card() ?? false);\r\n private elementRef = inject(ElementRef);\r\n\r\n ngOnInit() {\r\n if (!this.carousel) return;\r\n this.carousel.count.update((x) => x + 1);\r\n this.carousel.start.update((x) => x + 1);\r\n this.index.set(this.carousel.start());\r\n\r\n this.carousel.panels.update((x) => {\r\n x.push(this.elementRef);\r\n return [...x];\r\n });\r\n this.carousel.updatePanel.pipe(takeUntil(this.unSubject)).subscribe(() => {\r\n this.update();\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (!this.carousel) return;\r\n this.carousel.start.update((x) => x - 1);\r\n const idx = this.carousel.panels().indexOf(this.elementRef);\r\n this.carousel.panels.update((x) => {\r\n x.splice(idx, 1);\r\n return [...x];\r\n });\r\n }\r\n\r\n setActive() {\r\n if (!this.carousel) return;\r\n const isActive: boolean = this.carousel.active() === this.index();\r\n if (this.activeSignal() !== isActive) {\r\n this.activeSignal.set(isActive);\r\n }\r\n }\r\n\r\n setStyles() {\r\n if (!this.carousel) return;\r\n const width = this.elementRef.nativeElement.offsetWidth;\r\n const height = this.elementRef.nativeElement.offsetHeight;\r\n let offset = this.carousel.active() - this.index();\r\n let distance = width;\r\n if (this.carousel.card()) {\r\n if (this.carousel.direction() === 'vertical') {\r\n console.warn('[x-carousel] vertical direction is not supported in card mode');\r\n }\r\n this.inStage.set(Math.round(Math.abs(offset)) <= 1);\r\n this.translate.set(this.calcCardTranslate(this.index(), this.carousel.active())!);\r\n this.scale.set(offset === 0 ? 1 : this.cardScale());\r\n } else {\r\n if (this.carousel?.direction() === 'vertical') {\r\n distance = height;\r\n this.translateType.set('translateY');\r\n }\r\n const map: any = {\r\n '-2': -distance,\r\n '-1': distance,\r\n '0': 0,\r\n '1': 0 - distance,\r\n '2': distance\r\n };\r\n offset = offset < -2 ? -2 : offset > 2 ? 2 : offset;\r\n this.translate.set(map[offset]);\r\n }\r\n this.animating.set(\r\n this.carousel.active() === this.index() ||\r\n this.carousel.before() === this.index() ||\r\n this.carousel.start() === Math.abs(offset) ||\r\n this.carousel.card()\r\n );\r\n }\r\n\r\n calcCardTranslate(index: number, activeIndex: number) {\r\n if (!this.carousel) return;\r\n const parentWidth = this.carousel.carousel().nativeElement.offsetWidth;\r\n let offset: number = index - activeIndex;\r\n let activeFirstOrLast = this.carousel.start() > 1 && this.carousel.start() === Math.abs(offset);\r\n if (this.inStage() || activeFirstOrLast) {\r\n if (activeFirstOrLast) offset = offset < 0 ? 1 : -1;\r\n return (parentWidth * ((2 - this.cardScale()) * offset + 1)) / 4;\r\n } else if (index < activeIndex) {\r\n return (-(1 + this.cardScale()) * parentWidth) / 4;\r\n } else {\r\n return ((3 + this.cardScale()) * parentWidth) / 4;\r\n }\r\n }\r\n\r\n update() {\r\n this.setActive();\r\n this.setStyles();\r\n }\r\n\r\n panelClick() {\r\n if (!this.carousel) return;\r\n if (this.carousel.card() && this.carousel.active() !== this.index()) {\r\n this.carousel.autoplay() && this.carousel.resetInterval();\r\n this.carousel.setActiveItem(this.index());\r\n }\r\n }\r\n}\r\n","<div #carouselPanel class=\"x-carousel-panel\" (click)=\"panelClick()\">\r\n @if (card()) {\r\n <div [hidden]=\"activeSignal()\" class=\"x-carousel-mask\"></div>\r\n }\r\n <ng-content></ng-content>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { XCarouselComponent } from './carousel.component';\r\nimport { XCarouselPanelComponent } from './carousel-panel.component';\r\n\r\n@NgModule({\r\n imports: [XCarouselComponent, XCarouselPanelComponent],\r\n exports: [XCarouselComponent, XCarouselPanelComponent]\r\n})\r\nexport class XCarouselModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["takeUntil"],"mappings":";;;;;;;;;AAIA;;;;AAIG;AACI,MAAM,eAAe,GAAG;AAC/B,MAAM,sBAAsB,GAAG,UAAU;AAEzC;;AAEG;MAEU,iBAAkB,SAAQ,iBAAiB,CAAC,sBAAsB,CAAC,CAAA;AADhF,IAAA,WAAA,GAAA;;AAEE;;;;;;;;;;;;;;;;;;;;;;;AAuBG;AACM,QAAA,IAAA,CAAA,MAAM,GAAG,KAAK,CAAS,CAAC,CAAC;AAClC;;;;;;;;;;;;AAYG;AACM,QAAA,IAAA,CAAA,MAAM,GAAG,KAAK,CAAkB,IAAI,CAAC,MAAM,EAAE,MAAM,IAAI,OAAO,EAAE,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC;AACzG;;;;;;;;;;;;AAYG;QACM,IAAO,CAAA,OAAA,GAAG,KAAK,CAAmB,IAAI,CAAC,MAAM,EAAE,OAAO,IAAI,OAAO,CAAC;AAC3E;;;;;;;;;;;;;;;;AAgBG;QACM,IAAK,CAAA,KAAA,GAAG,KAAK,CAAiB,IAAI,CAAC,MAAM,EAAE,KAAK,IAAI,OAAO,CAAC;AACrE;;;;;;;;;;;;AAYG;QACM,IAAS,CAAA,SAAA,GAAG,KAAK,CAAqB,IAAI,CAAC,MAAM,EAAE,SAAS,IAAI,YAAY,CAAC;AACtF;;;;;;;;;;;;AAYG;QACM,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAoB,IAAI,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;AAC7E;;;;;;;;;;;;AAYG;QACM,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAkB,IAAI,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;AAC1E;;;;;;;;;;;;AAYG;QACM,IAAO,CAAA,OAAA,GAAG,KAAK,CAAoB,KAAK,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;AAC7E;;;;;;;;;;;;AAYG;QACM,IAAI,CAAA,IAAA,GAAG,KAAK,CAAoB,KAAK,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;AAC1E;;;;;;;;;;;;AAYG;AACM,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAS,EAAE,CAAC;AACjC;;;;;;;;;;;;AAYG;QACM,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAoB,KAAK,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;AAC9E;;;;;;;;;;;;AAYG;AACM,QAAA,IAAA,CAAA,aAAa,GAAG,KAAK,CAAS,EAAE,CAAC;AAC1C;;;;;;;;;;;;AAYG;QACM,IAAO,CAAA,OAAA,GAAG,KAAK,CAAoB,KAAK,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;AAC9E;iIAtMY,iBAAiB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,gwDADkC,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;;2FACrD,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAD7B,SAAS;mBAAC,EAAE,QAAQ,EAAE,CAAG,EAAA,eAAe,WAAW,EAAE,QAAQ,EAAE,EAAE,EAAE;;AA2NpE;;;;AAIG;AACI,MAAM,oBAAoB,GAAG;AAEpC;;AAEG;AAEG,MAAO,sBAAuB,SAAQ,SAAS,CAAA;AADrD,IAAA,WAAA,GAAA;;AAEE;;;;;;;;;;;;AAYG;QACM,IAAM,CAAA,MAAA,GAAG,KAAK,CAAoB,KAAK,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;AAC7E;iIAfY,sBAAsB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,mPADkC,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;;2FAC1D,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBADlC,SAAS;mBAAC,EAAE,QAAQ,EAAE,CAAG,EAAA,oBAAoB,WAAW,EAAE,QAAQ,EAAE,EAAE,EAAE;;;ACvNnE,MAAO,kBAAmB,SAAQ,iBAAiB,CAAA;AARzD,IAAA,WAAA,GAAA;;AASE,QAAA,IAAA,CAAA,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAA0B,UAAU,CAAC;AAClE,QAAA,IAAA,CAAA,OAAO,GAAG,SAAS,CAAC,QAAQ,CAA0B,SAAS,CAAC;AAChE,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AAClB,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AAGnB,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC;AAChC,QAAA,IAAA,CAAA,SAAS,GAAG,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC;AAC9C,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC;AACnB,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC;AACjB,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAW,EAAE,CAAC;AACrB,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,OAAO,EAAQ;AAGvC,QAAA,IAAA,CAAA,QAAQ,GAAG,QAAQ,CAAC,OAAO;AACzB,YAAA,CAAC,GAAG,eAAe,CAAA,CAAA,EAAI,IAAI,CAAC,SAAS,EAAE,CAAA,CAAE,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE;AACvE,SAAA,CAAC,CAAC;AAEH,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,OAAO,EAAQ;AAEjC,QAAA,IAAA,CAAA,IAAI,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAqEzC;IAnEC,eAAe,GAAA;QACb,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,aAAa,EAAE;AACvC,QAAA,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,aAAa;AACjC,aAAA,IAAI,CACH,YAAY,CAAC,EAAE,CAAC,EAChB,GAAG,CAAC,CAAC,EAAE,cAAc,EAAE,KAAI;AACzB,YAAA,IAAI,CAAC,cAAc,GAAG,cAAc;AACpC,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE;SACxB,CAAC,EACF,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC;AAE1B,aAAA,SAAS,EAAE;;AAGhB,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO;AACpC,QAAA,SAAS,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,aAAa,EAAE;AAC9D,QAAA,SAAS,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;;IAGxD,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,KAAK,EAAE,WAAW,EAAE;AACzB,QAAA,IAAI,CAAC,YAAY,EAAE,WAAW,EAAE;AAChC,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;AACrB,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;AACzB,QAAA,IAAI,CAAC,cAAc,EAAE,UAAU,EAAE;AACjC,QAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE;;AAG7B,IAAA,MAAM,CAAC,KAAa,EAAE,QAAgB,EAAE,KAAc,EAAA;QACpD,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,KAAK;YAAE;QACtD,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,aAAa,EAAE;AACvC,QAAA,IAAI,CAAC,aAAa,CAAC,KAAK,GAAG,QAAQ,CAAC;;IAGtC,aAAa,GAAA;QACX,IAAI,CAAC,IAAI,CAAC,SAAS;YAAE;AACrB,QAAA,IAAI,CAAC,KAAK,EAAE,WAAW,EAAE;AACzB,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;AACnB,YAAA,IAAI,CAAC,YAAY,EAAE,WAAW,EAAE;AAChC,YAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;YACnB,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,GAAG;AAChC,YAAA,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC,EAAE;AAC5B,iBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC;iBAC9B,SAAS,CAAC,MAAK;AACd,gBAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACnC,aAAC,CAAC;;QAEN,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE;AAClC,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC;aAC9B,SAAS,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;YACnB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AACvC,SAAC,CAAC;;AAGN,IAAA,aAAa,CAAC,KAAa,EAAA;AACzB,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YAAE;QACzB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;AAC9B,QAAA,MAAM,SAAS,GAAG,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,GAAG,KAAK;AAC7E,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC;AAC1B,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE;;AAGzB,IAAA,YAAY,CAAC,KAAa,EAAA;AACxB,QAAA,OAAO,IAAI,CAAC,MAAM,EAAE,KAAK,KAAK;;iIAxFrB,kBAAkB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,6UC7B/B,mjDAyCA,EAAA,MAAA,EAAA,CAAA,k/HAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDlBY,OAAO,EAAE,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,gBAAgB,qDAAE,kBAAkB,EAAA,QAAA,EAAA,YAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAM5C,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAR9B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAG,eAAe,CAAE,CAAA,EAAA,OAAA,EACrB,CAAC,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,CAAC,iBAGzC,iBAAiB,CAAC,IAAI,EACpB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,mjDAAA,EAAA,MAAA,EAAA,CAAA,k/HAAA,CAAA,EAAA;;;AEF3C,MAAO,uBAAwB,SAAQ,sBAAsB,CAAA;AARnE,IAAA,WAAA,GAAA;;AAwBE,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC;AACjB,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC;AAEzB,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC;AACxB,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC;AACjB,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC;AACrB,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,YAAY,CAAC;AACpC,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC;AACvB,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,OAAO,EAAQ;AAC/B,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,kBAAkB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QACrE,IAAY,CAAA,YAAA,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;AACpC,QAAA,IAAA,CAAA,IAAI,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,KAAK,CAAC;AAC7C,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAkGxC;AA7HC,IAAA,IAA0C,OAAO,GAAA;QAC/C,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE;;AAEhC,IAAA,IAAsC,YAAY,GAAA;AAChD,QAAA,OAAO,IAAI,CAAC,YAAY,EAAE;;AAE5B,IAAA,IAA8C,UAAU,GAAA;AACtD,QAAA,OAAO,IAAI,CAAC,OAAO,EAAE;;AAEvB,IAAA,IAA+C,YAAY,GAAA;AACzD,QAAA,OAAO,IAAI,CAAC,SAAS,EAAE;;AAEzB,IAAA,IAAoC,YAAY,GAAA;AAC9C,QAAA,OAAO,GAAG,IAAI,CAAC,aAAa,EAAE,IAAI,IAAI,CAAC,SAAS,EAAE,aAAa,IAAI,CAAC,KAAK,EAAE,GAAG;;IAgBhF,QAAQ,GAAA;QACN,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE;AACpB,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACxC,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACxC,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QAErC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAI;AAChC,YAAA,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;AACvB,YAAA,OAAO,CAAC,GAAG,CAAC,CAAC;AACf,SAAC,CAAC;AACF,QAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAACA,WAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;YACvE,IAAI,CAAC,MAAM,EAAE;AACf,SAAC,CAAC;;IAGJ,WAAW,GAAA;QACT,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE;AACpB,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACxC,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC;QAC3D,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAI;AAChC,YAAA,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;AAChB,YAAA,OAAO,CAAC,GAAG,CAAC,CAAC;AACf,SAAC,CAAC;;IAGJ,SAAS,GAAA;QACP,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE;AACpB,QAAA,MAAM,QAAQ,GAAY,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,KAAK,EAAE;AACjE,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE,KAAK,QAAQ,EAAE;AACpC,YAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC;;;IAInC,SAAS,GAAA;QACP,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE;QACpB,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,WAAW;QACvD,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,YAAY;AACzD,QAAA,IAAI,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE;QAClD,IAAI,QAAQ,GAAG,KAAK;AACpB,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE;YACxB,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,KAAK,UAAU,EAAE;AAC5C,gBAAA,OAAO,CAAC,IAAI,CAAC,+DAA+D,CAAC;;AAE/E,YAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC;YACnD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAE,CAAC;YACjF,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;;aAC9C;YACL,IAAI,IAAI,CAAC,QAAQ,EAAE,SAAS,EAAE,KAAK,UAAU,EAAE;gBAC7C,QAAQ,GAAG,MAAM;AACjB,gBAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,YAAY,CAAC;;AAEtC,YAAA,MAAM,GAAG,GAAQ;gBACf,IAAI,EAAE,CAAC,QAAQ;AACf,gBAAA,IAAI,EAAE,QAAQ;AACd,gBAAA,GAAG,EAAE,CAAC;gBACN,GAAG,EAAE,CAAC,GAAG,QAAQ;AACjB,gBAAA,GAAG,EAAE;aACN;YACD,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM;YACnD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;;AAEjC,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAChB,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,KAAK,EAAE;YACrC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,KAAK,EAAE;YACvC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;AAC1C,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CACvB;;IAGH,iBAAiB,CAAC,KAAa,EAAE,WAAmB,EAAA;QAClD,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE;AACpB,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,aAAa,CAAC,WAAW;AACtE,QAAA,IAAI,MAAM,GAAW,KAAK,GAAG,WAAW;QACxC,IAAI,iBAAiB,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;AAC/F,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE,IAAI,iBAAiB,EAAE;AACvC,YAAA,IAAI,iBAAiB;AAAE,gBAAA,MAAM,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACnD,OAAO,CAAC,WAAW,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC;;AAC3D,aAAA,IAAI,KAAK,GAAG,WAAW,EAAE;AAC9B,YAAA,OAAO,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,GAAG,WAAW,IAAI,CAAC;;aAC7C;AACL,YAAA,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,WAAW,IAAI,CAAC;;;IAIrD,MAAM,GAAA;QACJ,IAAI,CAAC,SAAS,EAAE;QAChB,IAAI,CAAC,SAAS,EAAE;;IAGlB,UAAU,GAAA;QACR,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE;AACpB,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,KAAK,EAAE,EAAE;AACnE,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE;YACzD,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;;;iIA3HlC,uBAAuB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAvB,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,ECzBpC,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,uBAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,2BAAA,EAAA,iBAAA,EAAA,4BAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,2NAMA,EDec,MAAA,EAAA,CAAA,6HAAA,CAAA,EAAA,UAAA,EAAA,CAAC,cAAc,CAAC,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAIjB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBARnC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAG,oBAAoB,CAAA,CAAE,EAGvB,UAAA,EAAA,CAAC,cAAc,CAAC,EACb,aAAA,EAAA,iBAAiB,CAAC,IAAI,EACpB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,2NAAA,EAAA,MAAA,EAAA,CAAA,6HAAA,CAAA,EAAA;8BAGL,OAAO,EAAA,CAAA;sBAAhD,WAAW;uBAAC,uBAAuB;gBAGE,YAAY,EAAA,CAAA;sBAAjD,WAAW;uBAAC,mBAAmB;gBAGc,UAAU,EAAA,CAAA;sBAAvD,WAAW;uBAAC,2BAA2B;gBAGO,YAAY,EAAA,CAAA;sBAA1D,WAAW;uBAAC,4BAA4B;gBAGL,YAAY,EAAA,CAAA;sBAA/C,WAAW;uBAAC,iBAAiB;;;ME9BnB,eAAe,CAAA;iIAAf,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAf,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,YAHhB,kBAAkB,EAAE,uBAAuB,CAC3C,EAAA,OAAA,EAAA,CAAA,kBAAkB,EAAE,uBAAuB,CAAA,EAAA,CAAA,CAAA;AAE1C,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,YAHhB,kBAAkB,CAAA,EAAA,CAAA,CAAA;;2FAGjB,eAAe,EAAA,UAAA,EAAA,CAAA;kBAJ3B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE,CAAC,kBAAkB,EAAE,uBAAuB,CAAC;AACtD,oBAAA,OAAO,EAAE,CAAC,kBAAkB,EAAE,uBAAuB;AACtD,iBAAA;;;ACPD;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"ng-nest-ui-carousel.mjs","sources":["../../../../lib/ng-nest/ui/carousel/carousel.property.ts","../../../../lib/ng-nest/ui/carousel/carousel.component.ts","../../../../lib/ng-nest/ui/carousel/carousel.component.html","../../../../lib/ng-nest/ui/carousel/carousel-panel.component.ts","../../../../lib/ng-nest/ui/carousel/carousel-panel.component.html","../../../../lib/ng-nest/ui/carousel/carousel.module.ts","../../../../lib/ng-nest/ui/carousel/ng-nest-ui-carousel.ts"],"sourcesContent":["import { XProperty, XPropertyFunction, XToNumber, XToCssPixelValue, XToBoolean } from '@ng-nest/ui/core';\r\nimport { Component, input, model } from '@angular/core';\r\nimport type { XNumber, XBoolean, XShadow, XDisplayDirection, XTrigger } from '@ng-nest/ui/core';\r\n\r\n/**\r\n * Carousel\r\n * @selector x-carousel\r\n * @decorator component\r\n */\r\nexport const XCarouselPrefix = 'x-carousel';\r\nconst X_CAROUSEL_CONFIG_NAME = 'carousel';\r\n\r\n/**\r\n * Carousel Property\r\n */\r\n@Component({ selector: `${XCarouselPrefix}-property`, template: '' })\r\nexport class XCarouselProperty extends XPropertyFunction(X_CAROUSEL_CONFIG_NAME) {\r\n /**\r\n * @zh_CN 当前激活的幻灯片索引\r\n * @en_US Index of the currently active slide\r\n * @example\r\n *\r\n * ```html\r\n * <x-carousel [active]=\"1\" (activeChange)=\"activeChange($event)\">\r\n * <x-carousel-panel>0</x-carousel-panel>\r\n * <x-carousel-panel>1</x-carousel-panel>\r\n * </x-carousel>\r\n * <x-carousel [(active)]=\"active\">\r\n * <x-carousel-panel>0</x-carousel-panel>\r\n * <x-carousel-panel>1</x-carousel-panel>\r\n * </x-carousel>\r\n * ```\r\n *\r\n * ```typescript\r\n * active = signal(1)\r\n * activeChange(active: number) {\r\n * console.log(active)\r\n * }\r\n * ```\r\n *\r\n */\r\n readonly active = model<number>(0);\r\n /**\r\n * @zh_CN 幻灯片高度\r\n * @en_US Slide height\r\n * @example\r\n *\r\n * ```html\r\n * <x-carousel height=\"18rem\">\r\n * <x-carousel-panel>0</x-carousel-panel>\r\n * <x-carousel-panel>1</x-carousel-panel>\r\n * </x-carousel>\r\n * ```\r\n *\r\n */\r\n readonly height = input<string, XNumber>(this.config?.height ?? '15rem', { transform: XToCssPixelValue });\r\n /**\r\n * @zh_CN 切换器触发方式\r\n * @en_US Switcher trigger method\r\n * @example\r\n *\r\n * ```html\r\n * <x-carousel trigger=\"click\">\r\n * <x-carousel-panel>0</x-carousel-panel>\r\n * <x-carousel-panel>1</x-carousel-panel>\r\n * </x-carousel>\r\n * ```\r\n *\r\n */\r\n readonly trigger = input<XCarouselTrigger>(this.config?.trigger ?? 'hover');\r\n /**\r\n * @zh_CN 箭头显示隐藏方式\r\n * @en_US Arrow shows how to hide\r\n * @example\r\n *\r\n * ```html\r\n * <x-carousel arrow=\"always\">\r\n * <x-carousel-panel>0</x-carousel-panel>\r\n * <x-carousel-panel>1</x-carousel-panel>\r\n * </x-carousel>\r\n * <x-carousel arrow=\"never\">\r\n * <x-carousel-panel>0</x-carousel-panel>\r\n * <x-carousel-panel>1</x-carousel-panel>\r\n * </x-carousel>\r\n * ```\r\n *\r\n */\r\n readonly arrow = input<XCarouselArrow>(this.config?.arrow ?? 'hover');\r\n /**\r\n * @zh_CN 幻灯片轮播方向\r\n * @en_US Slide rotation direction\r\n * @example\r\n *\r\n * ```html\r\n * <x-carousel direction=\"vertical\">\r\n * <x-carousel-panel>0</x-carousel-panel>\r\n * <x-carousel-panel>1</x-carousel-panel>\r\n * </x-carousel>\r\n * ```\r\n *\r\n */\r\n readonly direction = input<XCarouselDirection>(this.config?.direction ?? 'horizontal');\r\n /**\r\n * @zh_CN 自动切换\r\n * @en_US Automatic switching\r\n * @example\r\n *\r\n * ```html\r\n * <x-carousel autoplay=\"false\">\r\n * <x-carousel-panel>0</x-carousel-panel>\r\n * <x-carousel-panel>1</x-carousel-panel>\r\n * </x-carousel>\r\n * ```\r\n *\r\n */\r\n readonly autoplay = input<boolean, XBoolean>(true, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 自动切换时间间隔,ms\r\n * @en_US Automatic switching time interval. ms\r\n * @example\r\n *\r\n * ```html\r\n * <x-carousel interval=\"5000\">\r\n * <x-carousel-panel>0</x-carousel-panel>\r\n * <x-carousel-panel>1</x-carousel-panel>\r\n * </x-carousel>\r\n * ```\r\n *\r\n */\r\n readonly interval = input<number, XNumber>(3000, { transform: XToNumber });\r\n /**\r\n * @zh_CN 切换器是否显示在外面\r\n * @en_US Whether the switcher is displayed outside\r\n * @example\r\n *\r\n * ```html\r\n * <x-carousel outside>\r\n * <x-carousel-panel>0</x-carousel-panel>\r\n * <x-carousel-panel>1</x-carousel-panel>\r\n * </x-carousel>\r\n * ```\r\n *\r\n */\r\n readonly outside = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 是否以卡片的方式显示幻灯片\r\n * @en_US Whether to display the slideshow as a card\r\n * @example\r\n *\r\n * ```html\r\n * <x-carousel card>\r\n * <x-carousel-panel>0</x-carousel-panel>\r\n * <x-carousel-panel>1</x-carousel-panel>\r\n * </x-carousel>\r\n * ```\r\n *\r\n */\r\n readonly card = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 显示文字\r\n * @en_US Display text\r\n * @example\r\n *\r\n * ```html\r\n * <x-carousel text=\"text info\">\r\n * <x-carousel-panel>0</x-carousel-panel>\r\n * <x-carousel-panel>1</x-carousel-panel>\r\n * </x-carousel>\r\n * ```\r\n *\r\n */\r\n readonly text = input<string>('');\r\n /**\r\n * @zh_CN 显示进度条\r\n * @en_US Show progress\r\n * @example\r\n *\r\n * ```html\r\n * <x-carousel progress>\r\n * <x-carousel-panel>0</x-carousel-panel>\r\n * <x-carousel-panel>1</x-carousel-panel>\r\n * </x-carousel>\r\n * ```\r\n *\r\n */\r\n readonly progress = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 进度条颜色\r\n * @en_US Progress color\r\n * @example\r\n *\r\n * ```html\r\n * <x-carousel progress progressColor=\"blue\">\r\n * <x-carousel-panel>0</x-carousel-panel>\r\n * <x-carousel-panel>1</x-carousel-panel>\r\n * </x-carousel>\r\n * ```\r\n *\r\n */\r\n readonly progressColor = input<string>('');\r\n /**\r\n * @zh_CN 显示当前页面\r\n * @en_US Show current page\r\n * @example\r\n *\r\n * ```html\r\n * <x-carousel current>\r\n * <x-carousel-panel>0</x-carousel-panel>\r\n * <x-carousel-panel>1</x-carousel-panel>\r\n * </x-carousel>\r\n * ```\r\n *\r\n */\r\n readonly current = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n}\r\n\r\n/**\r\n * @zh_CN 指示器切换方式\r\n * @en_US Indicator switching method\r\n */\r\nexport type XCarouselTrigger = XTrigger;\r\n\r\n/**\r\n * @zh_CN 切换箭头显示方式\r\n * @en_US Toggle arrow display\r\n */\r\nexport type XCarouselArrow = XShadow;\r\n\r\n/**\r\n * @zh_CN 走马灯展示的方向\r\n * @en_US The direction of the revolving lantern\r\n */\r\nexport type XCarouselDirection = XDisplayDirection;\r\n\r\n/**\r\n * Carousel Panel\r\n * @selector x-carousel-panel\r\n * @decorator component\r\n */\r\nexport const XCarouselPanelPrefix = 'x-carousel-panel';\r\n\r\n/**\r\n * Carousel Panel Property\r\n */\r\n@Component({ selector: `${XCarouselPanelPrefix}-property`, template: '' })\r\nexport class XCarouselPanelProperty extends XProperty {\r\n /**\r\n * @zh_CN 激活当前幻灯片\r\n * @en_US Activate the current slide\r\n * @example\r\n *\r\n * ```html\r\n * <x-carousel>\r\n * <x-carousel-panel>0</x-carousel-panel>\r\n * <x-carousel-panel active>1</x-carousel-panel>\r\n * </x-carousel>\r\n * ```\r\n *\r\n */\r\n readonly active = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n}\r\n","import {\r\n Component,\r\n ViewEncapsulation,\r\n ElementRef,\r\n ChangeDetectionStrategy,\r\n SimpleChanges,\r\n PLATFORM_ID,\r\n inject,\r\n computed,\r\n viewChild,\r\n signal\r\n} from '@angular/core';\r\nimport { XCarouselPrefix, XCarouselProperty } from './carousel.property';\r\nimport { XIsUndefined, XIsChange, XIsEmpty, XResize } from '@ng-nest/ui/core';\r\nimport { Subject, Subscription, interval } from 'rxjs';\r\nimport { takeUntil, debounceTime, tap } from 'rxjs/operators';\r\nimport { NgClass, isPlatformBrowser } from '@angular/common';\r\nimport { XButtonComponent } from '@ng-nest/ui/button';\r\nimport { XProgressComponent } from '@ng-nest/ui/progress';\r\nimport type { XResizeObserver } from '@ng-nest/ui/core';\r\n\r\n@Component({\r\n selector: `${XCarouselPrefix}`,\r\n imports: [NgClass, XButtonComponent, XProgressComponent],\r\n templateUrl: './carousel.component.html',\r\n styleUrls: ['./carousel.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XCarouselComponent extends XCarouselProperty {\r\n carousel = viewChild.required<ElementRef<HTMLElement>>('carousel');\r\n content = viewChild.required<ElementRef<HTMLElement>>('content');\r\n start = signal(-1);\r\n before = signal(-1);\r\n timer?: Subscription;\r\n precentTimer?: Subscription;\r\n platformId = inject(PLATFORM_ID);\r\n isBrowser = isPlatformBrowser(this.platformId);\r\n percent = signal(0);\r\n count = signal(0);\r\n panels = signal<object[]>([]);\r\n private unSubject = new Subject<void>();\r\n private resizeObserver!: XResizeObserver;\r\n\r\n classMap = computed(() => ({\r\n [`${XCarouselPrefix}-${this.direction()}`]: !XIsEmpty(this.direction())\r\n }));\r\n\r\n updatePanel = new Subject<void>();\r\n\r\n page = computed(() => this.active() + 1);\r\n\r\n ngAfterViewInit() {\r\n this.autoplay() && this.resetInterval();\r\n XResize(this.content().nativeElement)\r\n .pipe(\r\n debounceTime(30),\r\n tap(({ resizeObserver }) => {\r\n this.resizeObserver = resizeObserver;\r\n this.updatePanel.next();\r\n }),\r\n takeUntil(this.unSubject)\r\n )\r\n .subscribe();\r\n }\r\n\r\n ngOnChanges(simples: SimpleChanges): void {\r\n const { active, interval } = simples;\r\n XIsChange(interval) && this.autoplay() && this.resetInterval();\r\n XIsChange(active) && this.setActiveItem(this.active());\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.timer?.unsubscribe();\r\n this.precentTimer?.unsubscribe();\r\n this.unSubject.next();\r\n this.unSubject.complete();\r\n this.resizeObserver?.disconnect();\r\n this.updatePanel.complete();\r\n }\r\n\r\n action(index: number, increase: number, event?: string): void {\r\n if (!XIsUndefined(event) && this.trigger() !== event) return;\r\n this.autoplay() && this.resetInterval();\r\n this.setActiveItem(index + increase);\r\n }\r\n\r\n resetInterval(): void {\r\n if (!this.isBrowser) return;\r\n this.timer?.unsubscribe();\r\n if (this.progress()) {\r\n this.precentTimer?.unsubscribe();\r\n this.percent.set(0);\r\n const js = this.interval() / 100;\r\n this.precentTimer = interval(js)\r\n .pipe(takeUntil(this.unSubject))\r\n .subscribe(() => {\r\n this.percent.update((x) => x + 1);\r\n });\r\n }\r\n this.timer = interval(this.interval())\r\n .pipe(takeUntil(this.unSubject))\r\n .subscribe(() => {\r\n this.percent.set(0);\r\n this.setActiveItem(this.active() + 1);\r\n });\r\n }\r\n\r\n setActiveItem(index: number): void {\r\n if (this.start() === -1) return;\r\n this.before.set(this.active());\r\n const nextValue = index > this.start() ? 0 : index < 0 ? this.start() : index;\r\n this.active.set(nextValue);\r\n this.updatePanel.next();\r\n }\r\n\r\n getActivated(index: number) {\r\n return this.active() === index;\r\n }\r\n}\r\n","<div\r\n #carousel\r\n class=\"x-carousel\"\r\n [ngClass]=\"classMap()\"\r\n [class.x-carousel-arrow-always]=\"arrow() === 'always'\"\r\n [class.x-carousel-has-current]=\"current()\"\r\n [class.x-carousel-indicator-outside]=\"outside() || card()\"\r\n>\r\n <div #content class=\"x-carousel-content\" [style.height]=\"height()\">\r\n @if (arrow() !== 'never' && direction() !== 'vertical') {\r\n <x-button class=\"arrow-left\" icon=\"fto-chevron-left\" (click)=\"action(active(), -1)\"></x-button>\r\n <x-button class=\"arrow-right\" icon=\"fto-chevron-right\" (click)=\"action(active(), 1)\"></x-button>\r\n }\r\n <ng-content></ng-content>\r\n @if (text()) {\r\n <div class=\"x-carousel-text\">{{ text() }}</div>\r\n }\r\n @if (current()) {\r\n <div class=\"x-carousel-current\">\r\n <span class=\"x-carousel-active\">{{ page() }}</span> /\r\n <span class=\"x-carousel-count\">{{ count() }}</span>\r\n </div>\r\n }\r\n @if (progress()) {\r\n <div class=\"x-carousel-progress\">\r\n <x-progress [percent]=\"percent()\" [color]=\"progressColor()\" [info]=\"false\" height=\"0.325rem\"></x-progress>\r\n </div>\r\n }\r\n </div>\r\n <ul class=\"x-carousel-indicator\">\r\n @for (panel of panels(); track $index) {\r\n <li\r\n [class.x-activated]=\"getActivated($index)\"\r\n (click)=\"action($index, 0, 'click')\"\r\n (mouseenter)=\"action($index, 0, 'hover')\"\r\n >\r\n <x-button type=\"text\"></x-button>\r\n </li>\r\n }\r\n </ul>\r\n</div>\r\n","import {\r\n Component,\r\n OnInit,\r\n ViewEncapsulation,\r\n ElementRef,\r\n ChangeDetectionStrategy,\r\n inject,\r\n OnDestroy,\r\n signal,\r\n HostBinding,\r\n computed\r\n} from '@angular/core';\r\nimport { XCarouselPanelPrefix, XCarouselPanelProperty } from './carousel.property';\r\nimport { XDropAnimation } from '@ng-nest/ui/core';\r\nimport { XCarouselComponent } from './carousel.component';\r\nimport { Subject, takeUntil } from 'rxjs';\r\n\r\n@Component({\r\n selector: `${XCarouselPanelPrefix}`,\r\n templateUrl: './carousel-panel.component.html',\r\n styleUrls: ['./carousel-panel.component.scss'],\r\n animations: [XDropAnimation],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XCarouselPanelComponent extends XCarouselPanelProperty implements OnInit, OnDestroy {\r\n @HostBinding('class.x-carousel-card') get getCard() {\r\n return !!this.carousel?.card();\r\n }\r\n @HostBinding('class.x-activated') get getActivated() {\r\n return this.activeSignal();\r\n }\r\n @HostBinding('class.x-carousel-in-stage') get getInStage() {\r\n return this.inStage();\r\n }\r\n @HostBinding('class.x-carousel-animating') get getAnimating() {\r\n return this.animating();\r\n }\r\n @HostBinding('style.transform') get getTransform() {\r\n return `${this.translateType()}(${this.translate()}px) scale(${this.scale()})`;\r\n }\r\n index = signal(0);\r\n animating = signal(false);\r\n preTranslate!: number;\r\n cardScale = signal(0.83);\r\n scale = signal(1);\r\n translate = signal(0);\r\n translateType = signal('translateX');\r\n inStage = signal(false);\r\n unSubject = new Subject<void>();\r\n carousel = inject(XCarouselComponent, { optional: true, host: true });\r\n activeSignal = signal(this.active());\r\n card = computed(() => this.carousel?.card() ?? false);\r\n private elementRef = inject(ElementRef);\r\n\r\n ngOnInit() {\r\n if (!this.carousel) return;\r\n this.carousel.count.update((x) => x + 1);\r\n this.carousel.start.update((x) => x + 1);\r\n this.index.set(this.carousel.start());\r\n\r\n this.carousel.panels.update((x) => {\r\n x.push(this.elementRef);\r\n return [...x];\r\n });\r\n this.carousel.updatePanel.pipe(takeUntil(this.unSubject)).subscribe(() => {\r\n this.update();\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (!this.carousel) return;\r\n this.carousel.start.update((x) => x - 1);\r\n const idx = this.carousel.panels().indexOf(this.elementRef);\r\n this.carousel.panels.update((x) => {\r\n x.splice(idx, 1);\r\n return [...x];\r\n });\r\n }\r\n\r\n setActive() {\r\n const isActive: boolean = this.carousel!.active() === this.index();\r\n if (this.activeSignal() !== isActive) {\r\n this.activeSignal.set(isActive);\r\n }\r\n }\r\n\r\n setStyles() {\r\n const width = this.elementRef.nativeElement.offsetWidth;\r\n const height = this.elementRef.nativeElement.offsetHeight;\r\n let offset = this.carousel!.active() - this.index();\r\n let distance = width;\r\n if (this.carousel!.card()) {\r\n if (this.carousel!.direction() === 'vertical') {\r\n console.warn('[x-carousel] vertical direction is not supported in card mode');\r\n }\r\n this.inStage.set(Math.round(Math.abs(offset)) <= 1);\r\n this.translate.set(this.calcCardTranslate(this.index(), this.carousel!.active())!);\r\n this.scale.set(offset === 0 ? 1 : this.cardScale());\r\n } else {\r\n if (this.carousel?.direction() === 'vertical') {\r\n distance = height;\r\n this.translateType.set('translateY');\r\n }\r\n const map: any = {\r\n '-2': -distance,\r\n '-1': distance,\r\n '0': 0,\r\n '1': 0 - distance,\r\n '2': distance\r\n };\r\n offset = offset < -2 ? -2 : offset > 2 ? 2 : offset;\r\n this.translate.set(map[offset]);\r\n }\r\n this.animating.set(\r\n this.carousel!.active() === this.index() ||\r\n this.carousel!.before() === this.index() ||\r\n this.carousel!.start() === Math.abs(offset) ||\r\n this.carousel!.card()\r\n );\r\n }\r\n\r\n calcCardTranslate(index: number, activeIndex: number) {\r\n const parentWidth = this.carousel!.carousel().nativeElement.offsetWidth;\r\n let offset: number = index - activeIndex;\r\n let activeFirstOrLast = this.carousel!.start() > 1 && this.carousel!.start() === Math.abs(offset);\r\n if (this.inStage() || activeFirstOrLast) {\r\n if (activeFirstOrLast) offset = offset < 0 ? 1 : -1;\r\n return (parentWidth * ((2 - this.cardScale()) * offset + 1)) / 4;\r\n } else if (index < activeIndex) {\r\n return (-(1 + this.cardScale()) * parentWidth) / 4;\r\n } else {\r\n return ((3 + this.cardScale()) * parentWidth) / 4;\r\n }\r\n }\r\n\r\n update() {\r\n this.setActive();\r\n this.setStyles();\r\n }\r\n\r\n panelClick() {\r\n if (this.carousel?.card() && this.carousel?.active() !== this.index()) {\r\n this.carousel?.autoplay() && this.carousel?.resetInterval();\r\n this.carousel?.setActiveItem(this.index());\r\n }\r\n }\r\n}\r\n","<div #carouselPanel class=\"x-carousel-panel\" (click)=\"panelClick()\">\r\n @if (card()) {\r\n <div [hidden]=\"activeSignal()\" class=\"x-carousel-mask\"></div>\r\n }\r\n <ng-content></ng-content>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { XCarouselComponent } from './carousel.component';\r\nimport { XCarouselPanelComponent } from './carousel-panel.component';\r\n\r\n@NgModule({\r\n imports: [XCarouselComponent, XCarouselPanelComponent],\r\n exports: [XCarouselComponent, XCarouselPanelComponent]\r\n})\r\nexport class XCarouselModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["takeUntil"],"mappings":"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"}
|
|
@@ -427,6 +427,7 @@ class XCascadeComponent extends XCascadeProperty {
|
|
|
427
427
|
if (this.disabledComputed())
|
|
428
428
|
return;
|
|
429
429
|
this.enter.set(true);
|
|
430
|
+
console.log(this.value());
|
|
430
431
|
if (!XIsEmpty(this.value())) {
|
|
431
432
|
this.icon.set('');
|
|
432
433
|
this.clearable.set(true);
|
|
@@ -454,12 +455,7 @@ class XCascadeComponent extends XCascadeProperty {
|
|
|
454
455
|
if (this.portalAttached()) {
|
|
455
456
|
this.portal?.overlayRef?.detach();
|
|
456
457
|
this.active.set(false);
|
|
457
|
-
return true;
|
|
458
458
|
}
|
|
459
|
-
return false;
|
|
460
|
-
}
|
|
461
|
-
destroyPortal() {
|
|
462
|
-
this.portal?.overlayRef?.dispose();
|
|
463
459
|
}
|
|
464
460
|
showPortal() {
|
|
465
461
|
if (this.disabledComputed() || this.animating())
|
|
@@ -496,8 +492,6 @@ class XCascadeComponent extends XCascadeProperty {
|
|
|
496
492
|
}
|
|
497
493
|
setInstance() {
|
|
498
494
|
let { componentRef, overlayRef } = this.portal;
|
|
499
|
-
if (!componentRef || !overlayRef)
|
|
500
|
-
return;
|
|
501
495
|
this.portalComponent.set(componentRef);
|
|
502
496
|
this.portalOverlayRef.set(overlayRef);
|
|
503
497
|
this.realPlacement.set(this.placement());
|