This commit is contained in:
CHEVALLIER Abel
2025-11-13 16:23:22 +01:00
parent de9c515a47
commit cb235644dc
34924 changed files with 3811102 additions and 0 deletions

View File

@@ -0,0 +1,19 @@
nz-water-mark {
flex: 1 1 auto;
}
nz-divider {
height: auto;
margin: 0 20px;
}
form {
flex: 0 0 280px;
}
nz-input-number {
margin-right: 12px;
width: 40%;
}

View File

@@ -0,0 +1,84 @@
<div style="display: flex;">
<nz-water-mark
[nzContent]="form.value.content!"
[nzRotate]="form.value.rotate!"
[nzZIndex]="form.value.zIndex!"
[nzGap]="gap"
[nzOffset]="offset"
[nzFont]="font"
>
<p nz-typography style="z-index: 10; position:relative;">
The light-speed iteration of the digital world makes products more complex. However, human consciousness and
attention resources are limited. Facing this design contradiction, the pursuit of natural interaction will be
the consistent direction of Ant Design.
</p>
<p nz-typography style="z-index: 10; position:relative;">
Natural user cognition: According to cognitive psychology, about 80% of external information is obtained
through visual channels. The most important visual elements in the interface design, including layout, colors,
illustrations, icons, etc., should fully absorb the laws of nature, thereby reducing the user&apos;s cognitive
cost and bringing authentic and smooth feelings. In some scenarios, opportunely adding other sensory channels
such as hearing, touch can create a richer and more natural product experience.
</p>
<p nz-typography style="z-index: 10; position:relative;">
Natural user behavior: In the interaction with the system, the designer should fully understand the
relationship between users, system roles, and task objectives, and also contextually organize system functions
and services. At the same time, a series of methods such as behavior analysis, artificial intelligence and
sensors could be applied to assist users to make effective decisions and reduce extra operations of users, to
save users&apos; mental and physical resources and make human-computer interaction more natural.
</p>
<img
style="z-index: 30; position:relative; width: 100%; max-width: 800px;"
src="https://gw.alipayobjects.com/mdn/rms_08e378/afts/img/A*zx7LTI_ECSAAAAAAAAAAAABkARQnAQ"
alt="示例图片"
/>
</nz-water-mark>
<nz-divider nzType="vertical"></nz-divider>
<form nz-form nzLayout="vertical" [formGroup]="form">
<nz-form-item>
<nz-form-label>Content</nz-form-label>
<nz-form-control>
<input nz-input type="text" formControlName="content" />
</nz-form-control>
</nz-form-item>
<nz-form-item>
<nz-form-label>Color</nz-form-label>
<nz-form-control>
<nz-color-picker [nzValue]="color" (nzOnChange)="changeColor($event)"></nz-color-picker>
</nz-form-control>
</nz-form-item>
<nz-form-item>
<nz-form-label>FontSize</nz-form-label>
<nz-form-control>
<nz-slider formControlName="fontSize"></nz-slider>
</nz-form-control>
</nz-form-item>
<nz-form-item>
<nz-form-label>zIndex</nz-form-label>
<nz-form-control>
<nz-slider formControlName="zIndex"></nz-slider>
</nz-form-control>
</nz-form-item>
<nz-form-item>
<nz-form-label>Rotate</nz-form-label>
<nz-form-control>
<nz-slider [nzMin]="-180" [nzMax]="180" formControlName="rotate"></nz-slider>
</nz-form-control>
</nz-form-item>
<nz-form-item>
<nz-form-label>Gap</nz-form-label>
<nz-form-control>
<nz-input-number formControlName="gapX"></nz-input-number>
<nz-input-number formControlName="gapY"></nz-input-number>
</nz-form-control>
</nz-form-item>
<nz-form-item>
<nz-form-label>Offset</nz-form-label>
<nz-form-control>
<nz-input-number formControlName="offsetX"></nz-input-number>
<nz-input-number formControlName="offsetY"></nz-input-number>
</nz-form-control>
</nz-form-item>
</form>
</div>

View File

@@ -0,0 +1,23 @@
import { fakeAsync, ComponentFixture, TestBed } from '@angular/core/testing';
import { <%= classify(name) %>Component } from './<%= dasherize(name) %>.component';
describe('<%= classify(name) %>Component', () => {
let component: <%= classify(name) %>Component;
let fixture: ComponentFixture<<%= classify(name) %>Component>;
beforeEach(fakeAsync(() => {
TestBed.configureTestingModule({
declarations: [ <%= classify(name) %>Component ]
})
.compileComponents();
;
fixture = TestBed.createComponent(<%= classify(name) %>Component);
component = fixture.componentInstance;
fixture.detectChanges();
}));
it('should compile', () => {
expect(component).toBeTruthy();
});
});

View File

@@ -0,0 +1,173 @@
import { ChangeDetectorRef, Component, inject, OnInit } from '@angular/core';
import { NonNullableFormBuilder, ReactiveFormsModule } from '@angular/forms';
import { NzColor, NzColorPickerModule } from 'ng-zorro-antd/color-picker';
import { NzDividerModule } from 'ng-zorro-antd/divider';
import { NzFormModule } from 'ng-zorro-antd/form';
import { NzInputModule } from 'ng-zorro-antd/input';
import { NzInputNumberModule } from 'ng-zorro-antd/input-number';
import { NzSliderModule } from 'ng-zorro-antd/slider';
import { NzTypographyModule } from 'ng-zorro-antd/typography';
import { FontType, NzWaterMarkModule } from 'ng-zorro-antd/water-mark';
@Component({
selector: '<%= selector %>',
imports: [
ReactiveFormsModule,
NzColorPickerModule,
NzDividerModule,
NzFormModule,
NzInputModule,
NzInputNumberModule,
NzSliderModule,
NzTypographyModule,
NzWaterMarkModule
],
<% if(inlineTemplate) { %>template: `
<div style="display: flex;">
<nz-water-mark
[nzContent]="form.value.content!"
[nzRotate]="form.value.rotate!"
[nzZIndex]="form.value.zIndex!"
[nzGap]="gap"
[nzOffset]="offset"
[nzFont]="font"
>
<p nz-typography style="z-index: 10; position:relative;">
The light-speed iteration of the digital world makes products more complex. However, human consciousness and
attention resources are limited. Facing this design contradiction, the pursuit of natural interaction will be
the consistent direction of Ant Design.
</p>
<p nz-typography style="z-index: 10; position:relative;">
Natural user cognition: According to cognitive psychology, about 80% of external information is obtained
through visual channels. The most important visual elements in the interface design, including layout, colors,
illustrations, icons, etc., should fully absorb the laws of nature, thereby reducing the user&apos;s cognitive
cost and bringing authentic and smooth feelings. In some scenarios, opportunely adding other sensory channels
such as hearing, touch can create a richer and more natural product experience.
</p>
<p nz-typography style="z-index: 10; position:relative;">
Natural user behavior: In the interaction with the system, the designer should fully understand the
relationship between users, system roles, and task objectives, and also contextually organize system functions
and services. At the same time, a series of methods such as behavior analysis, artificial intelligence and
sensors could be applied to assist users to make effective decisions and reduce extra operations of users, to
save users&apos; mental and physical resources and make human-computer interaction more natural.
</p>
<img
style="z-index: 30; position:relative; width: 100%; max-width: 800px;"
src="https://gw.alipayobjects.com/mdn/rms_08e378/afts/img/A*zx7LTI_ECSAAAAAAAAAAAABkARQnAQ"
alt="示例图片"
/>
</nz-water-mark>
<nz-divider nzType="vertical"></nz-divider>
<form nz-form nzLayout="vertical" [formGroup]="form">
<nz-form-item>
<nz-form-label>Content</nz-form-label>
<nz-form-control>
<input nz-input type="text" formControlName="content" />
</nz-form-control>
</nz-form-item>
<nz-form-item>
<nz-form-label>Color</nz-form-label>
<nz-form-control>
<nz-color-picker [nzValue]="color" (nzOnChange)="changeColor($event)"></nz-color-picker>
</nz-form-control>
</nz-form-item>
<nz-form-item>
<nz-form-label>FontSize</nz-form-label>
<nz-form-control>
<nz-slider formControlName="fontSize"></nz-slider>
</nz-form-control>
</nz-form-item>
<nz-form-item>
<nz-form-label>zIndex</nz-form-label>
<nz-form-control>
<nz-slider formControlName="zIndex"></nz-slider>
</nz-form-control>
</nz-form-item>
<nz-form-item>
<nz-form-label>Rotate</nz-form-label>
<nz-form-control>
<nz-slider [nzMin]="-180" [nzMax]="180" formControlName="rotate"></nz-slider>
</nz-form-control>
</nz-form-item>
<nz-form-item>
<nz-form-label>Gap</nz-form-label>
<nz-form-control>
<nz-input-number formControlName="gapX"></nz-input-number>
<nz-input-number formControlName="gapY"></nz-input-number>
</nz-form-control>
</nz-form-item>
<nz-form-item>
<nz-form-label>Offset</nz-form-label>
<nz-form-control>
<nz-input-number formControlName="offsetX"></nz-input-number>
<nz-input-number formControlName="offsetY"></nz-input-number>
</nz-form-control>
</nz-form-item>
</form>
</div>
`<% } else { %>templateUrl: './<%= dasherize(name) %>.component.html'<% } %>,
<% if(inlineStyle) { %>styles: [`
nz-water-mark {
flex: 1 1 auto;
}
nz-divider {
height: auto;
margin: 0 20px;
}
form {
flex: 0 0 280px;
}
nz-input-number {
margin-right: 12px;
width: 40%;
}
`]<% } else { %>styleUrls: ['./<%= dasherize(name) %>.component.<%= style %>']<% } %>
})
export class <%= classify(name) %>Component implements OnInit {
private fb = inject(NonNullableFormBuilder);
form = this.fb.group({
content: 'NG Ant Design',
fontSize: 16,
zIndex: 11,
rotate: -22,
gapX: 100,
gapY: 100,
offsetX: 50,
offsetY: 50
});
color: string = 'rgba(0,0,0,.15)';
font: FontType = {
color: 'rgba(0,0,0,.15)',
fontSize: 16
};
gap: [number, number] = [100, 100];
offset: [number, number] = [50, 50];
constructor(private cdr: ChangeDetectorRef) {}
ngOnInit(): void {
this.form.valueChanges.subscribe(item => {
this.font = {
fontSize: item.fontSize,
color: this.color
};
this.gap = [item.gapX!, item.gapY!];
this.offset = [item.offsetX!, item.offsetY!];
this.cdr.markForCheck();
});
}
changeColor(value: { color: NzColor; format: string }): void {
this.color = value.color.toRgbString();
this.font = {
fontSize: this.form.value.fontSize,
color: value.color.toRgbString()
};
this.cdr.markForCheck();
}
}

View File

@@ -0,0 +1,14 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = default_1;
const schematics_1 = require("@angular-devkit/schematics");
const build_component_1 = require("../../utils/build-component");
function default_1(options) {
return (0, schematics_1.chain)([
(0, build_component_1.buildComponent)(Object.assign({}, options), {
template: './__path__/__name@dasherize@if-flat__/__name@dasherize__.component.html.template',
stylesheet: './__path__/__name@dasherize@if-flat__/__name@dasherize__.component.__style__.template'
})
]);
}
//# sourceMappingURL=index.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../schematics/demo/water-mark-custom/index.ts"],"names":[],"mappings":";;AAQA,4BAUC;AAlBD,2DAGoC;AACpC,iEAA6D;AAI7D,mBAAwB,OAAe;IACrC,OAAO,IAAA,kBAAK,EAAC;QACX,IAAA,gCAAc,oBACP,OAAO,GACZ;YACE,QAAQ,EAAE,kFAAkF;YAC5F,UAAU,EAAE,uFAAuF;SACpG,CACF;KACF,CAAC,CAAC;AACL,CAAC"}

View File

@@ -0,0 +1,3 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
//# sourceMappingURL=schema.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../../schematics/demo/water-mark-custom/schema.ts"],"names":[],"mappings":""}

View File

@@ -0,0 +1 @@
{"$schema":"http://json-schema.org/schema","$id":"custom-water-mark","title":"NG-ZORRO custom water-mark","type":"object","properties":{"path":{"type":"string","format":"path","description":"The path to create the component.","visible":false},"project":{"type":"string","description":"The name of the project.","$default":{"$source":"projectName"}},"name":{"type":"string","description":"The name of the component.","$default":{"$source":"argv","index":0},"x-prompt":"What should be the name of the component?"},"inlineStyle":{"description":"When true, includes styles inline in the component.ts file. Only CSS styles can be included inline. By default, an external styles file is created and referenced in the component.ts file.","type":"boolean","default":false,"alias":"s"},"inlineTemplate":{"description":"When true, includes template inline in the component.ts file. By default, an external template file is created and referenced in the component.ts file.","type":"boolean","default":false,"alias":"t"},"standalone":{"description":"Whether the generated component is standalone.","type":"boolean"},"prefix":{"type":"string","description":"The prefix to apply to the generated component selector.","alias":"p","oneOf":[{"maxLength":0},{"minLength":1,"format":"html-selector"}]},"styleext":{"description":"The file extension to use for style files.","type":"string","default":"css","x-deprecated":"Use \"style\" instead."},"style":{"description":"The file extension or preprocessor to use for style files.","type":"string","default":"css","enum":["css","scss","sass","less","styl"]},"spec":{"type":"boolean","description":"When true (the default), generates a \"spec.ts\" test file for the new component.","default":true,"x-deprecated":"Use \"skipTests\" instead."},"skipTests":{"type":"boolean","description":"When true, does not create \"spec.ts\" test files for the new component."},"flat":{"type":"boolean","description":"Flag to indicate if a dir is created.","default":false},"skipImport":{"type":"boolean","description":"When true, does not import this component into the owning NgModule."},"selector":{"type":"string","format":"html-selector","description":"The selector to use for the component."},"module":{"type":"string","description":"Allows specification of the declaring module.","alias":"m"},"export":{"type":"boolean","default":false,"description":"When true, the declaring NgModule exports this component."},"entryComponent":{"type":"boolean","default":false,"description":"When true, the new component is the entry component of the declaring NgModule."},"classnameWithModule":{"type":"boolean","description":"When true, Use module class name as additional prefix for the component classname.","default":false}},"required":["name"]}