@vectoriox/iox-ui 4.0.3 → 4.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/vectoriox-iox-ui.mjs +376 -35
- package/fesm2022/vectoriox-iox-ui.mjs.map +1 -1
- package/index.d.ts +95 -6
- package/package.json +11 -5
- package/.github/workflows/publish-iox-ui.yml +0 -68
- package/.github/workflows/release-iox-ui.yml.disabled +0 -77
- package/angular.json +0 -150
- package/karma.conf.js +0 -44
- package/projects/iox-ui/.github/copilot-instructions.md +0 -32
- package/projects/iox-ui/.releaserc.json +0 -42
- package/projects/iox-ui/README.md +0 -149
- package/projects/iox-ui/karma.conf.js +0 -44
- package/projects/iox-ui/ng +0 -0
- package/projects/iox-ui/ng-package.json +0 -12
- package/projects/iox-ui/package-lock.json +0 -93
- package/projects/iox-ui/package.json +0 -13
- package/projects/iox-ui/src/lib/iox-aos/iox-aos-animations.ts +0 -45
- package/projects/iox-ui/src/lib/iox-aos/iox-aos-container.component.ts +0 -46
- package/projects/iox-ui/src/lib/iox-aos/iox-aos.directive.ts +0 -133
- package/projects/iox-ui/src/lib/iox-aos/iox-aos.module.ts +0 -33
- package/projects/iox-ui/src/lib/iox-aos/iox-aos.service.ts +0 -21
- package/projects/iox-ui/src/lib/iox-masonry/iox-masonry-item.directive.ts +0 -24
- package/projects/iox-ui/src/lib/iox-masonry/iox-masonry.component.spec.ts +0 -25
- package/projects/iox-ui/src/lib/iox-masonry/iox-masonry.component.ts +0 -71
- package/projects/iox-ui/src/lib/iox-masonry/iox-masonry.module.ts +0 -15
- package/projects/iox-ui/src/lib/iox-masonry/iox-masonry.service.spec.ts +0 -16
- package/projects/iox-ui/src/lib/iox-masonry/iox-masonry.service.ts +0 -9
- package/projects/iox-ui/src/lib/iox-page/iox-page.module.ts +0 -13
- package/projects/iox-ui/src/lib/iox-page/page-component/page-component.component.html +0 -5
- package/projects/iox-ui/src/lib/iox-page/page-component/page-component.component.scss +0 -19
- package/projects/iox-ui/src/lib/iox-page/page-component/page-component.component.ts +0 -60
- package/projects/iox-ui/src/lib/iox-ui.module.ts +0 -11
- package/projects/iox-ui/src/lib/services/page-scroll.provider.ts +0 -45
- package/projects/iox-ui/src/lib/view-position/view-position.directive.ts +0 -98
- package/projects/iox-ui/src/lib/view-position/view-position.module.ts +0 -16
- package/projects/iox-ui/src/public-api.ts +0 -25
- package/projects/iox-ui/src/test.ts +0 -15
- package/projects/iox-ui/tsconfig.lib.json +0 -15
- package/projects/iox-ui/tsconfig.lib.prod.json +0 -10
- package/projects/iox-ui/tsconfig.spec.json +0 -17
- package/src/app/app-routing.module.ts +0 -15
- package/src/app/app.component.html +0 -17
- package/src/app/app.component.scss +0 -31
- package/src/app/app.component.spec.ts +0 -33
- package/src/app/app.component.ts +0 -21
- package/src/app/app.module.ts +0 -36
- package/src/app/pages/aos/aos.component.html +0 -35
- package/src/app/pages/aos/aos.component.scss +0 -49
- package/src/app/pages/aos/aos.component.ts +0 -30
- package/src/app/pages/masonry/masonry.component.html +0 -10
- package/src/app/pages/masonry/masonry.component.scss +0 -23
- package/src/app/pages/masonry/masonry.component.ts +0 -73
- package/src/app/styles/abstracts/functions.scss +0 -0
- package/src/app/styles/abstracts/mixins.scss +0 -0
- package/src/app/styles/abstracts/variables.scss +0 -5
- package/src/app/styles/base/fonts/heebo-black/Heebo-Black.eot +0 -0
- package/src/app/styles/base/fonts/heebo-black/Heebo-Black.svg +0 -1163
- package/src/app/styles/base/fonts/heebo-black/Heebo-Black.ttf +0 -0
- package/src/app/styles/base/fonts/heebo-black/Heebo-Black.woff +0 -0
- package/src/app/styles/base/fonts/heebo-black/Heebo-Black.woff2 +0 -0
- package/src/app/styles/base/fonts/heebo-bold/Heebo-Bold.eot +0 -0
- package/src/app/styles/base/fonts/heebo-bold/Heebo-Bold.svg +0 -1163
- package/src/app/styles/base/fonts/heebo-bold/Heebo-Bold.ttf +0 -0
- package/src/app/styles/base/fonts/heebo-bold/Heebo-Bold.woff +0 -0
- package/src/app/styles/base/fonts/heebo-bold/Heebo-Bold.woff2 +0 -0
- package/src/app/styles/base/fonts/heebo-extrabold/Heebo-ExtraBold.eot +0 -0
- package/src/app/styles/base/fonts/heebo-extrabold/Heebo-ExtraBold.svg +0 -1152
- package/src/app/styles/base/fonts/heebo-extrabold/Heebo-ExtraBold.ttf +0 -0
- package/src/app/styles/base/fonts/heebo-extrabold/Heebo-ExtraBold.woff +0 -0
- package/src/app/styles/base/fonts/heebo-extrabold/Heebo-ExtraBold.woff2 +0 -0
- package/src/app/styles/base/fonts/heebo-extralight/Heebo-ExtraLight.eot +0 -0
- package/src/app/styles/base/fonts/heebo-extralight/Heebo-ExtraLight.svg +0 -1152
- package/src/app/styles/base/fonts/heebo-extralight/Heebo-ExtraLight.ttf +0 -0
- package/src/app/styles/base/fonts/heebo-extralight/Heebo-ExtraLight.woff +0 -0
- package/src/app/styles/base/fonts/heebo-extralight/Heebo-ExtraLight.woff2 +0 -0
- package/src/app/styles/base/fonts/heebo-light/Heebo-Light.eot +0 -0
- package/src/app/styles/base/fonts/heebo-light/Heebo-Light.svg +0 -1151
- package/src/app/styles/base/fonts/heebo-light/Heebo-Light.ttf +0 -0
- package/src/app/styles/base/fonts/heebo-light/Heebo-Light.woff +0 -0
- package/src/app/styles/base/fonts/heebo-light/Heebo-Light.woff2 +0 -0
- package/src/app/styles/base/fonts/heebo-medium/Heebo-Medium.eot +0 -0
- package/src/app/styles/base/fonts/heebo-medium/Heebo-Medium.svg +0 -1158
- package/src/app/styles/base/fonts/heebo-medium/Heebo-Medium.ttf +0 -0
- package/src/app/styles/base/fonts/heebo-medium/Heebo-Medium.woff +0 -0
- package/src/app/styles/base/fonts/heebo-medium/Heebo-Medium.woff2 +0 -0
- package/src/app/styles/base/fonts/heebo-regular/Heebo-Regular.eot +0 -0
- package/src/app/styles/base/fonts/heebo-regular/Heebo-Regular.svg +0 -1150
- package/src/app/styles/base/fonts/heebo-regular/Heebo-Regular.ttf +0 -0
- package/src/app/styles/base/fonts/heebo-regular/Heebo-Regular.woff +0 -0
- package/src/app/styles/base/fonts/heebo-regular/Heebo-Regular.woff2 +0 -0
- package/src/app/styles/base/fonts/heebo-semibold/Heebo-SemiBold.eot +0 -0
- package/src/app/styles/base/fonts/heebo-semibold/Heebo-SemiBold.svg +0 -1155
- package/src/app/styles/base/fonts/heebo-semibold/Heebo-SemiBold.ttf +0 -0
- package/src/app/styles/base/fonts/heebo-semibold/Heebo-SemiBold.woff +0 -0
- package/src/app/styles/base/fonts/heebo-semibold/Heebo-SemiBold.woff2 +0 -0
- package/src/app/styles/base/fonts/heebo-thin/Heebo-Thin.eot +0 -0
- package/src/app/styles/base/fonts/heebo-thin/Heebo-Thin.svg +0 -1143
- package/src/app/styles/base/fonts/heebo-thin/Heebo-Thin.ttf +0 -0
- package/src/app/styles/base/fonts/heebo-thin/Heebo-Thin.woff +0 -0
- package/src/app/styles/base/fonts/heebo-thin/Heebo-Thin.woff2 +0 -0
- package/src/app/styles/base/fonts/iox.eot +0 -0
- package/src/app/styles/base/fonts/iox.svg +0 -35
- package/src/app/styles/base/fonts/iox.ttf +0 -0
- package/src/app/styles/base/fonts/iox.woff +0 -0
- package/src/app/styles/base/iox-font.scss +0 -102
- package/src/app/styles/base/reset.scss +0 -0
- package/src/app/styles/base/typography.scss +0 -104
- package/src/app/styles/layout/flex.scss +0 -183
- package/src/app/styles/layout/grid.scss +0 -0
- package/src/app/styles/main.scss +0 -17
- package/src/assets/.gitkeep +0 -0
- package/src/assets/images/1.jfif +0 -0
- package/src/assets/images/2.jfif +0 -0
- package/src/assets/images/3.jfif +0 -0
- package/src/assets/images/4.png +0 -0
- package/src/assets/images/5.jfif +0 -0
- package/src/assets/images/6.jfif +0 -0
- package/src/assets/images/7.jfif +0 -0
- package/src/assets/images/8.jfif +0 -0
- package/src/assets/images/9.jfif +0 -0
- package/src/environments/environment.prod.ts +0 -3
- package/src/environments/environment.ts +0 -16
- package/src/favicon.ico +0 -0
- package/src/index.html +0 -13
- package/src/main.ts +0 -12
- package/src/polyfills.ts +0 -53
- package/src/styles.scss +0 -15
- package/src/test.ts +0 -14
- package/temp/unused-iox-projects/README.md +0 -10
- package/temp/unused-iox-projects/iox-aos-KEEP.md +0 -1
- package/temp/unused-iox-projects/iox-aos_KEEP.md +0 -5
- package/temp/unused-iox-projects/iox-masonry-KEEP.md +0 -1
- package/temp/unused-iox-projects/iox-masonry_KEEP.md +0 -5
- package/tsconfig.app.json +0 -15
- package/tsconfig.json +0 -54
- package/tsconfig.spec.json +0 -18
package/angular.json
DELETED
|
@@ -1,150 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"$schema": "./node_modules/@angular/cli/lib/config/schema.json",
|
|
3
|
-
"version": 1,
|
|
4
|
-
"newProjectRoot": "projects",
|
|
5
|
-
"projects": {
|
|
6
|
-
"iox-libs": {
|
|
7
|
-
"projectType": "application",
|
|
8
|
-
"schematics": {
|
|
9
|
-
"@schematics/angular:component": {
|
|
10
|
-
"style": "scss"
|
|
11
|
-
},
|
|
12
|
-
"@schematics/angular:application": {
|
|
13
|
-
"strict": true
|
|
14
|
-
}
|
|
15
|
-
},
|
|
16
|
-
"root": "",
|
|
17
|
-
"sourceRoot": "src",
|
|
18
|
-
"prefix": "app",
|
|
19
|
-
"architect": {
|
|
20
|
-
"build": {
|
|
21
|
-
"builder": "@angular-devkit/build-angular:browser",
|
|
22
|
-
"options": {
|
|
23
|
-
"outputPath": "dist/iox-libs",
|
|
24
|
-
"index": "src/index.html",
|
|
25
|
-
"main": "src/main.ts",
|
|
26
|
-
"polyfills": "src/polyfills.ts",
|
|
27
|
-
"tsConfig": "tsconfig.app.json",
|
|
28
|
-
"inlineStyleLanguage": "scss",
|
|
29
|
-
"preserveSymlinks": true,
|
|
30
|
-
"allowedCommonJsDependencies": [
|
|
31
|
-
"@fristys/masonry"
|
|
32
|
-
],
|
|
33
|
-
"assets": [
|
|
34
|
-
"src/favicon.ico",
|
|
35
|
-
"src/assets"
|
|
36
|
-
],
|
|
37
|
-
"styles": [
|
|
38
|
-
"src/styles.scss"
|
|
39
|
-
],
|
|
40
|
-
"scripts": [
|
|
41
|
-
|
|
42
|
-
]
|
|
43
|
-
},
|
|
44
|
-
"configurations": {
|
|
45
|
-
"production": {
|
|
46
|
-
"budgets": [
|
|
47
|
-
{
|
|
48
|
-
"type": "initial",
|
|
49
|
-
"maximumWarning": "500mb",
|
|
50
|
-
"maximumError": "3mb"
|
|
51
|
-
},
|
|
52
|
-
{
|
|
53
|
-
"type": "anyComponentStyle",
|
|
54
|
-
"maximumWarning": "20mg",
|
|
55
|
-
"maximumError": "40mb"
|
|
56
|
-
}
|
|
57
|
-
],
|
|
58
|
-
"fileReplacements": [
|
|
59
|
-
{
|
|
60
|
-
"replace": "src/environments/environment.ts",
|
|
61
|
-
"with": "src/environments/environment.prod.ts"
|
|
62
|
-
}
|
|
63
|
-
],
|
|
64
|
-
"outputHashing": "all"
|
|
65
|
-
},
|
|
66
|
-
"development": {
|
|
67
|
-
"buildOptimizer": false,
|
|
68
|
-
"optimization": false,
|
|
69
|
-
"vendorChunk": true,
|
|
70
|
-
"extractLicenses": false,
|
|
71
|
-
"sourceMap": true,
|
|
72
|
-
"namedChunks": true
|
|
73
|
-
}
|
|
74
|
-
},
|
|
75
|
-
"defaultConfiguration": "production"
|
|
76
|
-
},
|
|
77
|
-
"serve": {
|
|
78
|
-
"builder": "@angular-devkit/build-angular:dev-server",
|
|
79
|
-
"configurations": {
|
|
80
|
-
"production": {
|
|
81
|
-
"buildTarget": "iox-libs:build:production"
|
|
82
|
-
},
|
|
83
|
-
"development": {
|
|
84
|
-
"buildTarget": "iox-libs:build:development"
|
|
85
|
-
}
|
|
86
|
-
},
|
|
87
|
-
"defaultConfiguration": "development"
|
|
88
|
-
},
|
|
89
|
-
"extract-i18n": {
|
|
90
|
-
"builder": "@angular-devkit/build-angular:extract-i18n",
|
|
91
|
-
"options": {
|
|
92
|
-
"buildTarget": "iox-libs:build"
|
|
93
|
-
}
|
|
94
|
-
},
|
|
95
|
-
"test": {
|
|
96
|
-
"builder": "@angular-devkit/build-angular:karma",
|
|
97
|
-
"options": {
|
|
98
|
-
"main": "src/test.ts",
|
|
99
|
-
"polyfills": "src/polyfills.ts",
|
|
100
|
-
"tsConfig": "tsconfig.spec.json",
|
|
101
|
-
"karmaConfig": "karma.conf.js",
|
|
102
|
-
"inlineStyleLanguage": "scss",
|
|
103
|
-
"assets": [
|
|
104
|
-
"src/favicon.ico",
|
|
105
|
-
"src/assets"
|
|
106
|
-
],
|
|
107
|
-
"styles": [
|
|
108
|
-
"src/styles.scss"
|
|
109
|
-
],
|
|
110
|
-
"scripts": []
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
},
|
|
115
|
-
"iox-ui": {
|
|
116
|
-
"projectType": "library",
|
|
117
|
-
"root": "projects/iox-ui",
|
|
118
|
-
"sourceRoot": "projects/iox-ui/src",
|
|
119
|
-
"prefix": "lib",
|
|
120
|
-
"architect": {
|
|
121
|
-
"build": {
|
|
122
|
-
"builder": "@angular-devkit/build-angular:ng-packagr",
|
|
123
|
-
"options": {
|
|
124
|
-
"project": "projects/iox-ui/ng-package.json"
|
|
125
|
-
},
|
|
126
|
-
"configurations": {
|
|
127
|
-
"production": {
|
|
128
|
-
"tsConfig": "projects/iox-ui/tsconfig.lib.prod.json"
|
|
129
|
-
},
|
|
130
|
-
"development": {
|
|
131
|
-
"tsConfig": "projects/iox-ui/tsconfig.lib.json"
|
|
132
|
-
}
|
|
133
|
-
},
|
|
134
|
-
"defaultConfiguration": "production"
|
|
135
|
-
},
|
|
136
|
-
"test": {
|
|
137
|
-
"builder": "@angular-devkit/build-angular:karma",
|
|
138
|
-
"options": {
|
|
139
|
-
"main": "projects/iox-ui/src/test.ts",
|
|
140
|
-
"tsConfig": "projects/iox-ui/tsconfig.spec.json",
|
|
141
|
-
"karmaConfig": "projects/iox-ui/karma.conf.js"
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
},
|
|
147
|
-
"cli": {
|
|
148
|
-
"analytics": "b66a4539-6ed0-409d-8d9d-e057d71faadf"
|
|
149
|
-
}
|
|
150
|
-
}
|
package/karma.conf.js
DELETED
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
// Karma configuration file, see link for more information
|
|
2
|
-
// https://karma-runner.github.io/1.0/config/configuration-file.html
|
|
3
|
-
|
|
4
|
-
module.exports = function (config) {
|
|
5
|
-
config.set({
|
|
6
|
-
basePath: '',
|
|
7
|
-
frameworks: ['jasmine', '@angular-devkit/build-angular'],
|
|
8
|
-
plugins: [
|
|
9
|
-
require('karma-jasmine'),
|
|
10
|
-
require('karma-chrome-launcher'),
|
|
11
|
-
require('karma-jasmine-html-reporter'),
|
|
12
|
-
require('karma-coverage'),
|
|
13
|
-
require('@angular-devkit/build-angular/plugins/karma')
|
|
14
|
-
],
|
|
15
|
-
client: {
|
|
16
|
-
jasmine: {
|
|
17
|
-
// you can add configuration options for Jasmine here
|
|
18
|
-
// the possible options are listed at https://jasmine.github.io/api/edge/Configuration.html
|
|
19
|
-
// for example, you can disable the random execution with `random: false`
|
|
20
|
-
// or set a specific seed with `seed: 4321`
|
|
21
|
-
},
|
|
22
|
-
clearContext: false // leave Jasmine Spec Runner output visible in browser
|
|
23
|
-
},
|
|
24
|
-
jasmineHtmlReporter: {
|
|
25
|
-
suppressAll: true // removes the duplicated traces
|
|
26
|
-
},
|
|
27
|
-
coverageReporter: {
|
|
28
|
-
dir: require('path').join(__dirname, './coverage/iox-libs'),
|
|
29
|
-
subdir: '.',
|
|
30
|
-
reporters: [
|
|
31
|
-
{ type: 'html' },
|
|
32
|
-
{ type: 'text-summary' }
|
|
33
|
-
]
|
|
34
|
-
},
|
|
35
|
-
reporters: ['progress', 'kjhtml'],
|
|
36
|
-
port: 9876,
|
|
37
|
-
colors: true,
|
|
38
|
-
logLevel: config.LOG_INFO,
|
|
39
|
-
autoWatch: true,
|
|
40
|
-
browsers: ['Chrome'],
|
|
41
|
-
singleRun: false,
|
|
42
|
-
restartOnFileChange: true
|
|
43
|
-
});
|
|
44
|
-
};
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
# Copilot Instructions for iox-ui
|
|
2
|
-
|
|
3
|
-
## Big Picture Architecture
|
|
4
|
-
- `iox-ui` is the UI component library for the IOX design system. It provides reusable Angular components (standalone where possible), shared styles, and utilities consumed by applications and other libraries in the monorepo.
|
|
5
|
-
- The library is packaged with `ng-packagr` and distributed from the `projects/iox-ui` entry.
|
|
6
|
-
|
|
7
|
-
## Developer Workflows
|
|
8
|
-
- Build library: `npm run build` (from `iox-ui` workspace root) or `ng build projects/iox-ui`
|
|
9
|
-
- Run tests: `npm test` (Karma + Jasmine)
|
|
10
|
-
- Lint/format: `npm run lint`, `npm run format`
|
|
11
|
-
- Local development: use `npm link` or add the library path to `tsconfig` of consuming apps for local testing.
|
|
12
|
-
|
|
13
|
-
## Project-Specific Conventions
|
|
14
|
-
- Components: prefer `standalone: true` with `imports: [...]` for Angular 20 compatibility.
|
|
15
|
-
- Styles: central SCSS files live under `src/app/styles/`. Migrate deprecated `@import` usages to `@use`/`@forward` when updating Sass.
|
|
16
|
-
- Inputs/outputs: follow the project's naming conventions and use typed Inputs/Outputs; avoid `any` where possible.
|
|
17
|
-
- Keep `peerDependencies` aligned with the workspace Angular version.
|
|
18
|
-
|
|
19
|
-
## Integration Points & Data Flow
|
|
20
|
-
- Consumed by applications in the monorepo (`iox-web-builder`, `iox-studio-web`, etc.) via project path mapping or npm package.
|
|
21
|
-
- Components should not directly depend on application-specific services; accept configuration via inputs/providers.
|
|
22
|
-
|
|
23
|
-
## Key Patterns & Examples
|
|
24
|
-
- Provide small, focused components that are easy to reuse and compose.
|
|
25
|
-
- Use `@angular/animation` sparingly and keep animations optional via inputs.
|
|
26
|
-
|
|
27
|
-
## External Dependencies
|
|
28
|
-
- Angular, PrimeNG, optional Masonry package (`@fristys/masonry`) — note CommonJS usage is allowed in `angular.json` for legacy packages.
|
|
29
|
-
|
|
30
|
-
---
|
|
31
|
-
|
|
32
|
-
For more details, see the repository root README and the other project Copilot instruction files for examples.
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"branches": ["main"],
|
|
3
|
-
"repositoryUrl": "https://github.com/vectoriox/iox-cms",
|
|
4
|
-
"plugins": [
|
|
5
|
-
[
|
|
6
|
-
"@semantic-release/commit-analyzer",
|
|
7
|
-
{
|
|
8
|
-
"preset": "conventionalcommits"
|
|
9
|
-
}
|
|
10
|
-
],
|
|
11
|
-
[
|
|
12
|
-
"@semantic-release/release-notes-generator",
|
|
13
|
-
{
|
|
14
|
-
"preset": "conventionalcommits"
|
|
15
|
-
}
|
|
16
|
-
],
|
|
17
|
-
[
|
|
18
|
-
"@semantic-release/changelog",
|
|
19
|
-
{
|
|
20
|
-
"changelogFile": "CHANGELOG.md"
|
|
21
|
-
}
|
|
22
|
-
],
|
|
23
|
-
[
|
|
24
|
-
"@semantic-release/npm",
|
|
25
|
-
{
|
|
26
|
-
"npmPublish": true,
|
|
27
|
-
"pkgRoot": "dist/projects/iox-ui"
|
|
28
|
-
}
|
|
29
|
-
],
|
|
30
|
-
"@semantic-release/github",
|
|
31
|
-
[
|
|
32
|
-
"@semantic-release/git",
|
|
33
|
-
{
|
|
34
|
-
"assets": [
|
|
35
|
-
"dist/projects/iox-ui/package.json",
|
|
36
|
-
"CHANGELOG.md"
|
|
37
|
-
],
|
|
38
|
-
"message": "chore(release): ${nextRelease.version} [skip ci]\n\n${nextRelease.notes}"
|
|
39
|
-
}
|
|
40
|
-
]
|
|
41
|
-
]
|
|
42
|
-
}
|
|
@@ -1,149 +0,0 @@
|
|
|
1
|
-
# iox-ui — UI component library
|
|
2
|
-
|
|
3
|
-
This package contains shared UI components, directives and services used across IOX apps. It is built as an Angular library and exported from the `projects/iox-ui` package.
|
|
4
|
-
|
|
5
|
-
## Overview
|
|
6
|
-
- Modular components: `IoxUiModule` aggregates smaller modules (AOS, Masonry, Page, ViewPosition).
|
|
7
|
-
- Individual modules are available and can be imported on demand.
|
|
8
|
-
- Includes a `PageScrollProvider` service (module-scoped) that wraps the Lenis smooth-scrolling library.
|
|
9
|
-
|
|
10
|
-
## Installation
|
|
11
|
-
Install the library in your application or workspace (published package name: `@iox-dev/iox-ui`):
|
|
12
|
-
|
|
13
|
-
```bash
|
|
14
|
-
npm install @iox-dev/iox-ui
|
|
15
|
-
```
|
|
16
|
-
|
|
17
|
-
Note: this library depends on `lenis` for the `PageScrollProvider`. The workspace version uses `lenis` as a dependency; consumers installing the published package will get it automatically.
|
|
18
|
-
|
|
19
|
-
## Public API / Exports
|
|
20
|
-
The library exports (important list):
|
|
21
|
-
|
|
22
|
-
- `IoxUiModule` — umbrella module that re-exports submodules
|
|
23
|
-
- `IoxPageModule` / `IoxPageComponent` — page wrapper with scroll events
|
|
24
|
-
- `IoxAosModule` / `iox-aos` directive and container component — animation-on-scroll helpers
|
|
25
|
-
- `IoxMasonryModule` — masonry layout helpers
|
|
26
|
-
- `ViewPositionModule` / `ViewPositionDirective` — viewport position utilities
|
|
27
|
-
- `PageScrollProvider` service — Lenis wrapper (module-scoped)
|
|
28
|
-
|
|
29
|
-
Refer to `projects/iox-ui/src/public-api.ts` for the full list of exported symbols.
|
|
30
|
-
|
|
31
|
-
## Usage
|
|
32
|
-
|
|
33
|
-
Import the umbrella module or individual modules in your application module:
|
|
34
|
-
|
|
35
|
-
```ts
|
|
36
|
-
import { IoxUiModule } from '@iox-dev/iox-ui';
|
|
37
|
-
|
|
38
|
-
@NgModule({
|
|
39
|
-
imports: [IoxUiModule]
|
|
40
|
-
})
|
|
41
|
-
export class AppModule {}
|
|
42
|
-
```
|
|
43
|
-
|
|
44
|
-
Or import only the page module if you only need the page component and scroll provider:
|
|
45
|
-
|
|
46
|
-
```ts
|
|
47
|
-
import { IoxPageModule } from '@iox-dev/iox-ui';
|
|
48
|
-
|
|
49
|
-
@NgModule({
|
|
50
|
-
imports: [IoxPageModule]
|
|
51
|
-
})
|
|
52
|
-
export class SomeModule {}
|
|
53
|
-
```
|
|
54
|
-
|
|
55
|
-
### IoxPageComponent
|
|
56
|
-
- **Selector:** `iox-page-component`
|
|
57
|
-
- **Inputs:**
|
|
58
|
-
- `class: string` — CSS classes applied to the outer wrapper.
|
|
59
|
-
- **Outputs:**
|
|
60
|
-
- `scrollEvent` — emits an object with `scrollTop`, `scrollLeft`, `scrollHeight`, `scrollWidth`, `clientHeight`, `clientWidth`, `scrollPercentage`.
|
|
61
|
-
|
|
62
|
-
Example:
|
|
63
|
-
|
|
64
|
-
```html
|
|
65
|
-
<iox-page-component class="my-page">
|
|
66
|
-
<div>Page content here</div>
|
|
67
|
-
</iox-page-component>
|
|
68
|
-
```
|
|
69
|
-
|
|
70
|
-
If you need to access the scrolling API programmatically, inject `PageScrollProvider` in a component that belongs to a module that imports `IoxPageModule` (the provider is module-scoped and provided by `IoxPageModule`):
|
|
71
|
-
|
|
72
|
-
```ts
|
|
73
|
-
constructor(private pageScroll: PageScrollProvider) {}
|
|
74
|
-
|
|
75
|
-
ngAfterViewInit() {
|
|
76
|
-
this.pageScroll.init({ wrapper: someEl });
|
|
77
|
-
}
|
|
78
|
-
```
|
|
79
|
-
|
|
80
|
-
## Services
|
|
81
|
-
|
|
82
|
-
- `PageScrollProvider` — wraps Lenis. Note: it is provided in `IoxPageModule` providers, so it's available only when the module is imported. This prevents the service from being visible globally unless explicitly included.
|
|
83
|
-
|
|
84
|
-
## Development
|
|
85
|
-
|
|
86
|
-
Build the workspace and library:
|
|
87
|
-
|
|
88
|
-
```bash
|
|
89
|
-
cd /path/to/repo/iox-ui
|
|
90
|
-
npm install
|
|
91
|
-
npm run build
|
|
92
|
-
```
|
|
93
|
-
|
|
94
|
-
Run the unit tests (if configured):
|
|
95
|
-
|
|
96
|
-
```bash
|
|
97
|
-
npm test
|
|
98
|
-
```
|
|
99
|
-
|
|
100
|
-
## Publishing
|
|
101
|
-
The repo includes GitHub Actions workflows to build and publish the library. The publishing workflow will:
|
|
102
|
-
|
|
103
|
-
- Build the library
|
|
104
|
-
- Bump the patch version automatically
|
|
105
|
-
- Commit the bumped version to `projects/iox-ui/package.json` and push to `main`
|
|
106
|
-
- Publish the package to npm (requires `NPM_TOKEN` secret)
|
|
107
|
-
|
|
108
|
-
If you prefer manual control of the version, use the manual publish workflow or publish locally (see `CONTRIBUTING` below).
|
|
109
|
-
|
|
110
|
-
## Contributing
|
|
111
|
-
|
|
112
|
-
1. Create a feature branch from `main`.
|
|
113
|
-
2. Add tests and ensure `npm run build` and `npm test` pass.
|
|
114
|
-
3. Open a Pull Request — CI will build the library.
|
|
115
|
-
|
|
116
|
-
If you add services that should be module-scoped, register them in the module `providers` array to keep DI scoping predictable.
|
|
117
|
-
|
|
118
|
-
## Troubleshooting
|
|
119
|
-
|
|
120
|
-
- If you see `Cannot find module 'lenis'` at runtime, ensure `lenis` is installed in the consuming project (it should be in the published package dependencies). Locally run `npm install lenis`.
|
|
121
|
-
- Sass `@import` deprecation warnings are present in the workspace styles; consider migrating to `@use`/`@forward`.
|
|
122
|
-
|
|
123
|
-
---
|
|
124
|
-
|
|
125
|
-
For more details, inspect `projects/iox-ui/src/public-api.ts` and the module files under `projects/iox-ui/src/lib/`.
|
|
126
|
-
# IoxUi
|
|
127
|
-
|
|
128
|
-
This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 13.1.0.
|
|
129
|
-
|
|
130
|
-
## Code scaffolding
|
|
131
|
-
|
|
132
|
-
Run `ng generate component component-name --project iox-ui` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project iox-ui`.
|
|
133
|
-
> Note: Don't forget to add `--project iox-ui` or else it will be added to the default project in your `angular.json` file.
|
|
134
|
-
|
|
135
|
-
## Build
|
|
136
|
-
|
|
137
|
-
Run `ng build iox-ui` to build the project. The build artifacts will be stored in the `dist/` directory.
|
|
138
|
-
|
|
139
|
-
## Publishing
|
|
140
|
-
|
|
141
|
-
After building your library with `ng build iox-ui`, go to the dist folder `cd dist/iox-ui` and run `npm publish`.
|
|
142
|
-
|
|
143
|
-
## Running unit tests
|
|
144
|
-
|
|
145
|
-
Run `ng test iox-ui` to execute the unit tests via [Karma](https://karma-runner.github.io).
|
|
146
|
-
|
|
147
|
-
## Further help
|
|
148
|
-
|
|
149
|
-
To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.io/cli) page.
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
// Karma configuration file, see link for more information
|
|
2
|
-
// https://karma-runner.github.io/1.0/config/configuration-file.html
|
|
3
|
-
|
|
4
|
-
module.exports = function (config) {
|
|
5
|
-
config.set({
|
|
6
|
-
basePath: '',
|
|
7
|
-
frameworks: ['jasmine', '@angular-devkit/build-angular'],
|
|
8
|
-
plugins: [
|
|
9
|
-
require('karma-jasmine'),
|
|
10
|
-
require('karma-chrome-launcher'),
|
|
11
|
-
require('karma-jasmine-html-reporter'),
|
|
12
|
-
require('karma-coverage'),
|
|
13
|
-
require('@angular-devkit/build-angular/plugins/karma')
|
|
14
|
-
],
|
|
15
|
-
client: {
|
|
16
|
-
jasmine: {
|
|
17
|
-
// you can add configuration options for Jasmine here
|
|
18
|
-
// the possible options are listed at https://jasmine.github.io/api/edge/Configuration.html
|
|
19
|
-
// for example, you can disable the random execution with `random: false`
|
|
20
|
-
// or set a specific seed with `seed: 4321`
|
|
21
|
-
},
|
|
22
|
-
clearContext: false // leave Jasmine Spec Runner output visible in browser
|
|
23
|
-
},
|
|
24
|
-
jasmineHtmlReporter: {
|
|
25
|
-
suppressAll: true // removes the duplicated traces
|
|
26
|
-
},
|
|
27
|
-
coverageReporter: {
|
|
28
|
-
dir: require('path').join(__dirname, '../../coverage/iox-ui'),
|
|
29
|
-
subdir: '.',
|
|
30
|
-
reporters: [
|
|
31
|
-
{ type: 'html' },
|
|
32
|
-
{ type: 'text-summary' }
|
|
33
|
-
]
|
|
34
|
-
},
|
|
35
|
-
reporters: ['progress', 'kjhtml'],
|
|
36
|
-
port: 9876,
|
|
37
|
-
colors: true,
|
|
38
|
-
logLevel: config.LOG_INFO,
|
|
39
|
-
autoWatch: true,
|
|
40
|
-
browsers: ['Chrome'],
|
|
41
|
-
singleRun: false,
|
|
42
|
-
restartOnFileChange: true
|
|
43
|
-
});
|
|
44
|
-
};
|
package/projects/iox-ui/ng
DELETED
|
File without changes
|
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@iox-dev/iox-ui",
|
|
3
|
-
"version": "1.0.9",
|
|
4
|
-
"lockfileVersion": 3,
|
|
5
|
-
"requires": true,
|
|
6
|
-
"packages": {
|
|
7
|
-
"": {
|
|
8
|
-
"name": "@iox-dev/iox-ui",
|
|
9
|
-
"version": "1.0.9",
|
|
10
|
-
"dependencies": {
|
|
11
|
-
"@fristys/masonry": "^1.1.7",
|
|
12
|
-
"tslib": "^2.3.0"
|
|
13
|
-
},
|
|
14
|
-
"peerDependencies": {
|
|
15
|
-
"@angular/animations": "^17.0.0",
|
|
16
|
-
"@angular/common": "^17.0.0",
|
|
17
|
-
"@angular/core": "^17.0.0"
|
|
18
|
-
}
|
|
19
|
-
},
|
|
20
|
-
"node_modules/@angular/animations": {
|
|
21
|
-
"version": "17.3.11",
|
|
22
|
-
"resolved": "https://registry.npmjs.org/@angular/animations/-/animations-17.3.11.tgz",
|
|
23
|
-
"integrity": "sha512-1y1Egag5jbdUSUWVK+KA39N9VFDrzq9ObjbAhrXFlXKa0npBRw5bprEEeLFQMETMP9Mpjbmj2PoASfl4vqj/Iw==",
|
|
24
|
-
"peer": true,
|
|
25
|
-
"dependencies": {
|
|
26
|
-
"tslib": "^2.3.0"
|
|
27
|
-
},
|
|
28
|
-
"engines": {
|
|
29
|
-
"node": "^18.13.0 || >=20.9.0"
|
|
30
|
-
},
|
|
31
|
-
"peerDependencies": {
|
|
32
|
-
"@angular/core": "17.3.11"
|
|
33
|
-
}
|
|
34
|
-
},
|
|
35
|
-
"node_modules/@angular/common": {
|
|
36
|
-
"version": "17.3.11",
|
|
37
|
-
"resolved": "https://registry.npmjs.org/@angular/common/-/common-17.3.11.tgz",
|
|
38
|
-
"integrity": "sha512-WG+HQjUaQziYLGdbcv2aW+G73uroN5VF9yk4qWYcolW+VB8SV/DOAol8uFVgCF21cIOl5+wfJZvA4r5oG3dYaw==",
|
|
39
|
-
"peer": true,
|
|
40
|
-
"dependencies": {
|
|
41
|
-
"tslib": "^2.3.0"
|
|
42
|
-
},
|
|
43
|
-
"engines": {
|
|
44
|
-
"node": "^18.13.0 || >=20.9.0"
|
|
45
|
-
},
|
|
46
|
-
"peerDependencies": {
|
|
47
|
-
"@angular/core": "17.3.11",
|
|
48
|
-
"rxjs": "^6.5.3 || ^7.4.0"
|
|
49
|
-
}
|
|
50
|
-
},
|
|
51
|
-
"node_modules/@angular/core": {
|
|
52
|
-
"version": "17.3.11",
|
|
53
|
-
"resolved": "https://registry.npmjs.org/@angular/core/-/core-17.3.11.tgz",
|
|
54
|
-
"integrity": "sha512-2wPZwXFei3kVxK2ylIH6CdGebrC4kvooFx7qoX+250OITAEFMODJGdh/e3x0DpFUjlRvQtIFQ+YpQlfC5JnL4g==",
|
|
55
|
-
"peer": true,
|
|
56
|
-
"dependencies": {
|
|
57
|
-
"tslib": "^2.3.0"
|
|
58
|
-
},
|
|
59
|
-
"engines": {
|
|
60
|
-
"node": "^18.13.0 || >=20.9.0"
|
|
61
|
-
},
|
|
62
|
-
"peerDependencies": {
|
|
63
|
-
"rxjs": "^6.5.3 || ^7.4.0",
|
|
64
|
-
"zone.js": "~0.14.0"
|
|
65
|
-
}
|
|
66
|
-
},
|
|
67
|
-
"node_modules/@fristys/masonry": {
|
|
68
|
-
"version": "1.1.7",
|
|
69
|
-
"resolved": "https://registry.npmjs.org/@fristys/masonry/-/masonry-1.1.7.tgz",
|
|
70
|
-
"integrity": "sha512-b/CohDq3E/NOXIlBa+b64ObmZvtjofPMLThBjDLa5gp/NCwDD6b8GoXTmMAoCwibZvIsXsgvk5JgIpE5QJg9mA=="
|
|
71
|
-
},
|
|
72
|
-
"node_modules/rxjs": {
|
|
73
|
-
"version": "7.8.1",
|
|
74
|
-
"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz",
|
|
75
|
-
"integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==",
|
|
76
|
-
"peer": true,
|
|
77
|
-
"dependencies": {
|
|
78
|
-
"tslib": "^2.1.0"
|
|
79
|
-
}
|
|
80
|
-
},
|
|
81
|
-
"node_modules/tslib": {
|
|
82
|
-
"version": "2.6.3",
|
|
83
|
-
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
|
|
84
|
-
"integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ=="
|
|
85
|
-
},
|
|
86
|
-
"node_modules/zone.js": {
|
|
87
|
-
"version": "0.14.7",
|
|
88
|
-
"resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.14.7.tgz",
|
|
89
|
-
"integrity": "sha512-0w6DGkX2BPuiK/NLf+4A8FLE43QwBfuqz2dVgi/40Rj1WmqUskCqj329O/pwrqFJLG5X8wkeG2RhIAro441xtg==",
|
|
90
|
-
"peer": true
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@vectoriox/iox-ui",
|
|
3
|
-
"version": "4.0.3",
|
|
4
|
-
"peerDependencies": {
|
|
5
|
-
"@angular/common": "^20.0.0",
|
|
6
|
-
"@angular/core": "^20.0.0",
|
|
7
|
-
"@angular/animations": "^20.0.0"
|
|
8
|
-
},
|
|
9
|
-
"dependencies": {
|
|
10
|
-
"tslib": "^2.3.0",
|
|
11
|
-
"@fristys/masonry": "^1.1.7"
|
|
12
|
-
}
|
|
13
|
-
}
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
import { AnimationBuilder, style, animate, keyframes } from '@angular/animations';
|
|
2
|
-
|
|
3
|
-
/********** Entries Animations ********************/
|
|
4
|
-
|
|
5
|
-
export const IoxAnimationStyles: any = {}
|
|
6
|
-
|
|
7
|
-
IoxAnimationStyles["fade-up"] = (delay:string, duration:string)=>{
|
|
8
|
-
return [style({ opacity: 0, transform: "translate3d(0,100px,0)"}),
|
|
9
|
-
animate(`${duration} ${delay} cubic-bezier(0.445, 0.05, 0.55, 0.95)`, style({ opacity: 1, transform: "translateZ(0)" }))]
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
IoxAnimationStyles["fade-right"] = (delay:string, duration:string)=>{
|
|
13
|
-
return [style({ opacity: 0, transform: "translateX(150px)"}),
|
|
14
|
-
animate(`${duration} ${delay} cubic-bezier(0.445, 0.05, 0.55, 0.95)`, style({ opacity: 1, transform: "translateZ(0)" }))]
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
IoxAnimationStyles["fade-out-right"] = (delay:string, duration:string)=>{
|
|
18
|
-
return [style({ opacity: 1, transform: "translateX(0px)"}),
|
|
19
|
-
animate(`${duration} ${delay} cubic-bezier(0.445, 0.05, 0.55, 0.95)`, style({ opacity: 0, transform: "translateX(150px)" }))]
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
IoxAnimationStyles["fade-left"] = (delay:string, duration:string)=>{
|
|
23
|
-
return [style({ opacity: 0, transform: "translateX(-150px)"}),
|
|
24
|
-
animate(`${duration} ${delay} cubic-bezier(0.445, 0.05, 0.55, 0.95)`, style({ opacity: 1, transform: "translateZ(0)" }))]
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
IoxAnimationStyles["fade-out-up"] = (delay:string, duration:string)=>{
|
|
28
|
-
return [ style({ opacity: 1, transform: "translateZ(0)" }),
|
|
29
|
-
animate(`${duration} ${delay} cubic-bezier(0.445, 0.05, 0.55, 0.95)`, style({ opacity: 0, transform: "translate3d(0,-100px,0)"}))]
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
IoxAnimationStyles["flip-left"] = (delay:string, duration:string)=>{
|
|
33
|
-
return [style({opacity: 0,transform: "perspective(2500px) rotateY(-100deg)"}),
|
|
34
|
-
animate(`${duration} ${delay} cubic-bezier(0.445, 0.05, 0.55, 0.95)`, style({ opacity: 1, transform: "perspective(2500px) rotateY(0)" }))]
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
IoxAnimationStyles["flip-up"] = (delay:string, duration:string)=>{
|
|
38
|
-
return [style({opacity: 0,transform: "perspective(2500px) rotateX(-100deg)"}),
|
|
39
|
-
animate(`${duration} ${delay} cubic-bezier(0.445, 0.05, 0.55, 0.95)`, style({ opacity: 1, transform: "perspective(2500px) rotateY(0)" }))]
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
IoxAnimationStyles["zoom-in-up"] = (delay:string, duration:string)=>{
|
|
43
|
-
return [style({opacity: 0,transform: "translate3d(0,100px,0) scale(.6)"}),
|
|
44
|
-
animate(`${duration} ${delay} cubic-bezier(0.445, 0.05, 0.55, 0.95)`, style({ opacity: 1, transform: "translateZ(0) scale(1)" }))]
|
|
45
|
-
}
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
import { Component, ElementRef, HostListener, Input, SimpleChanges, ViewChild } from '@angular/core';
|
|
2
|
-
import { Observable, Subject } from 'rxjs';
|
|
3
|
-
import { AOSService } from './iox-aos.service';
|
|
4
|
-
|
|
5
|
-
@Component({
|
|
6
|
-
selector: "[ioxAnimateContainer], ioxAnimateContainer",
|
|
7
|
-
template:`<div class='animate_root_element' #animateRooteElement>
|
|
8
|
-
<ng-content></ng-content>
|
|
9
|
-
</div>`,
|
|
10
|
-
standalone: false
|
|
11
|
-
})
|
|
12
|
-
export class IoxAnimateContainer {
|
|
13
|
-
|
|
14
|
-
@Input('kickIn') kickIn = true;
|
|
15
|
-
|
|
16
|
-
private _scrollOffset:Subject<any> = new Subject();
|
|
17
|
-
public readonly scrollOffset: Observable<any> = this._scrollOffset.asObservable();
|
|
18
|
-
@ViewChild('animateRooteElement') public animateRooteElement:any;
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
constructor(private _element: ElementRef, private _aOSService: AOSService) {
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
ngAfterViewInit(){
|
|
25
|
-
this.updateOffset();
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
@HostListener('scroll', ['$event'])
|
|
29
|
-
public onScroll($event:any){
|
|
30
|
-
this.updateOffset();
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
ngOnChanges(changes: SimpleChanges) {
|
|
34
|
-
console.log(changes);
|
|
35
|
-
if(changes['kickIn'] && changes['kickIn'].currentValue){
|
|
36
|
-
this.updateOffset();
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
private updateOffset(){
|
|
42
|
-
let elClientRect = this.animateRooteElement.nativeElement.getBoundingClientRect();
|
|
43
|
-
this._scrollOffset.next(elClientRect);
|
|
44
|
-
this._aOSService.updateScrollOffset(elClientRect);
|
|
45
|
-
}
|
|
46
|
-
}
|