@aurodesignsystem/auro-formkit 2.2.1-beta.2 → 2.2.1-beta.3
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/CHANGELOG.md +16 -0
- package/README.md +67 -67
- package/components/checkbox/README.md +1 -1
- package/components/checkbox/demo/readme.md +1 -1
- package/components/combobox/README.md +1 -1
- package/components/combobox/demo/api.min.js +352 -94
- package/components/combobox/demo/index.min.js +352 -94
- package/components/combobox/demo/readme.md +1 -1
- package/components/combobox/dist/index.js +352 -94
- package/components/combobox/dist/registered.js +352 -94
- package/components/counter/README.md +1 -1
- package/components/counter/demo/api.min.js +353 -95
- package/components/counter/demo/index.min.js +353 -95
- package/components/counter/demo/readme.md +1 -1
- package/components/counter/dist/index.js +353 -95
- package/components/counter/dist/registered.js +353 -95
- package/components/datepicker/README.md +1 -1
- package/components/datepicker/demo/api.min.js +466 -232
- package/components/datepicker/demo/index.min.js +466 -232
- package/components/datepicker/demo/readme.md +1 -1
- package/components/datepicker/dist/index.js +354 -114
- package/components/datepicker/dist/registered.js +354 -114
- package/components/dropdown/README.md +1 -1
- package/components/dropdown/demo/api.min.js +352 -94
- package/components/dropdown/demo/index.min.js +352 -94
- package/components/dropdown/demo/readme.md +1 -1
- package/components/dropdown/dist/auro-dropdown.d.ts +18 -0
- package/components/dropdown/dist/index.js +352 -94
- package/components/dropdown/dist/registered.js +352 -94
- package/components/form/README.md +1 -1
- package/components/form/demo/readme.md +1 -1
- package/components/input/README.md +1 -1
- package/components/input/demo/readme.md +1 -1
- package/components/menu/README.md +1 -1
- package/components/menu/demo/readme.md +1 -1
- package/components/radio/README.md +1 -1
- package/components/radio/demo/readme.md +1 -1
- package/components/select/README.md +1 -1
- package/components/select/demo/api.min.js +352 -94
- package/components/select/demo/index.min.js +352 -94
- package/components/select/demo/readme.md +1 -1
- package/components/select/dist/index.js +352 -94
- package/components/select/dist/registered.js +352 -94
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,21 @@
|
|
|
1
1
|
# Semantic Release Automated Changelog
|
|
2
2
|
|
|
3
|
+
## [2.2.1-beta.3](https://github.com/AlaskaAirlines/auro-formkit/compare/v2.2.1-beta.2...v2.2.1-beta.3) (2025-04-14)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Bug Fixes
|
|
7
|
+
|
|
8
|
+
* bubble focusable element's focusevent up to `#trigger` ([a9aabf3](https://github.com/AlaskaAirlines/auro-formkit/commit/a9aabf3702947201225744d87b621bd2d2bc0f36))
|
|
9
|
+
* clear event listeners on disconnectCallback in dropdown ([612ba3d](https://github.com/AlaskaAirlines/auro-formkit/commit/612ba3d1f2e9f80b8ecb39b2f026f8599044fe80))
|
|
10
|
+
* close only datepicker if dapicker is open inside of drawer ([15e8e14](https://github.com/AlaskaAirlines/auro-formkit/commit/15e8e147ca6d95982159a4004c5ac19f43fb1057))
|
|
11
|
+
* fix broken tabbing interaction ([493b453](https://github.com/AlaskaAirlines/auro-formkit/commit/493b4533353a6b03727f4448f53b3f2528c31080))
|
|
12
|
+
* null check on focus event binder in dropdown ([adabb63](https://github.com/AlaskaAirlines/auro-formkit/commit/adabb630d1fdc71618281643fff747a33f159955))
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
### Performance Improvements
|
|
16
|
+
|
|
17
|
+
* adding condition check of dropdown existence ([1ac8070](https://github.com/AlaskaAirlines/auro-formkit/commit/1ac8070c906a18418c4636506c35a26706bf0f26))
|
|
18
|
+
|
|
3
19
|
## [2.2.1-beta.2](https://github.com/AlaskaAirlines/auro-formkit/compare/v2.2.1-beta.1...v2.2.1-beta.2) (2025-04-07)
|
|
4
20
|
|
|
5
21
|
|
package/README.md
CHANGED
|
@@ -11,13 +11,13 @@ The following sections are editable by making changes to the following files:
|
|
|
11
11
|
| Use Cases | Examples for when to use this component | `./docs/partials/useCases.md` |
|
|
12
12
|
| Additional Information | For use to add any component specific information | `./docs/partials/readmeAddlInfo.md` |
|
|
13
13
|
| Component Example Code | HTML sample code of the components use | `./apiExamples/basic.html` |
|
|
14
|
-
-->
|
|
15
|
-
|
|
14
|
+
-->
|
|
15
|
+
|
|
16
16
|
# Auro Formkit
|
|
17
17
|
|
|
18
18
|
<!-- AURO-GENERATED-CONTENT:START (FILE:src=./docs/partials/description.md) -->
|
|
19
|
-
<!-- The below content is automatically added from ./docs/partials/description.md -->
|
|
20
|
-
|
|
19
|
+
<!-- The below content is automatically added from ./docs/partials/description.md -->
|
|
20
|
+
|
|
21
21
|
## Description
|
|
22
22
|
|
|
23
23
|
`auro-formkit` is a collection of web components that can be used to build forms.
|
|
@@ -38,34 +38,34 @@ It is a monorepo that contains the following components:
|
|
|
38
38
|
- `auro-radio`
|
|
39
39
|
- `auro-radio-group`
|
|
40
40
|
- `auro-select`
|
|
41
|
-
<!-- AURO-GENERATED-CONTENT:END -->
|
|
42
|
-
|
|
41
|
+
<!-- AURO-GENERATED-CONTENT:END -->
|
|
42
|
+
|
|
43
43
|
## Install
|
|
44
44
|
|
|
45
45
|
<!-- AURO-GENERATED-CONTENT:START (REMOTE:url=https://raw.githubusercontent.com/AlaskaAirlines/WC-Generator/master/componentDocs/partials/usage/componentInstall_esm.md) -->
|
|
46
46
|
[](https://github.com/AlaskaAirlines/auro-formkit/actions/workflows/testPublish.yml)
|
|
47
47
|
[](https://www.npmjs.com/package/@aurodesignsystem/auro-formkit)
|
|
48
48
|
[](https://www.apache.org/licenses/LICENSE-2.0)
|
|
49
|
-

|
|
50
|
-
|
|
49
|
+

|
|
50
|
+
|
|
51
51
|
```shell
|
|
52
52
|
$ npm i @aurodesignsystem/auro-formkit
|
|
53
53
|
```
|
|
54
54
|
|
|
55
55
|
Installing as a direct, dev or peer dependency is up to the user installing the package. If you are unsure as to what type of dependency you should use, consider reading this [stack overflow](https://stackoverflow.com/questions/18875674/whats-the-difference-between-dependencies-devdependencies-and-peerdependencies) answer.
|
|
56
56
|
|
|
57
|
-
<!-- AURO-GENERATED-CONTENT:END -->
|
|
58
|
-
|
|
57
|
+
<!-- AURO-GENERATED-CONTENT:END -->
|
|
58
|
+
|
|
59
59
|
## Getting Started
|
|
60
60
|
|
|
61
61
|
<!-- AURO-GENERATED-CONTENT:START (FILE:src=./docs/partials/gettingStarted.md) -->
|
|
62
62
|
<!-- The below content is automatically added from ./docs/partials/gettingStarted.md -->
|
|
63
|
-
To start using the Auro Formkit components, follow the instructions below:
|
|
64
|
-
|
|
63
|
+
To start using the Auro Formkit components, follow the instructions below:
|
|
64
|
+
|
|
65
65
|
### Usage
|
|
66
66
|
|
|
67
|
-
You can use Auro Formkit components in your project in two ways: automatic or custom registration.
|
|
68
|
-
|
|
67
|
+
You can use Auro Formkit components in your project in two ways: automatic or custom registration.
|
|
68
|
+
|
|
69
69
|
#### Automatic Registration
|
|
70
70
|
|
|
71
71
|
For automatic registration, simply import the component:
|
|
@@ -74,8 +74,8 @@ For automatic registration, simply import the component:
|
|
|
74
74
|
import "@aurodesignsystem/auro-formkit/auro-checkbox";
|
|
75
75
|
```
|
|
76
76
|
|
|
77
|
-
This will automatically register both the `<auro-checkbox>` and the included `<auro-checkbox-group>` component for use in your project. Note that not all Auro Formkit components have sub-components. Be sure to check the documentation for each component to understand its specific usage and registration requirements.
|
|
78
|
-
|
|
77
|
+
This will automatically register both the `<auro-checkbox>` and the included `<auro-checkbox-group>` component for use in your project. Note that not all Auro Formkit components have sub-components. Be sure to check the documentation for each component to understand its specific usage and registration requirements.
|
|
78
|
+
|
|
79
79
|
#### Custom Registration
|
|
80
80
|
|
|
81
81
|
If you prefer to register the component with a custom name, you can call the component class directly to create a custom registration:
|
|
@@ -87,8 +87,8 @@ AuroCheckbox.register('custom-checkbox');
|
|
|
87
87
|
AuroCheckbox.register('custom-checkbox-group');
|
|
88
88
|
```
|
|
89
89
|
|
|
90
|
-
This will register the component as `<custom-checkbox>` and `<custom-checkbox-group>`.
|
|
91
|
-
|
|
90
|
+
This will register the component as `<custom-checkbox>` and `<custom-checkbox-group>`.
|
|
91
|
+
|
|
92
92
|
#### TypeScript Module Resolution
|
|
93
93
|
|
|
94
94
|
When using TypeScript set `moduleResolution` to `bundler`, add the following to your `tsconfig.json`:
|
|
@@ -101,8 +101,8 @@ When using TypeScript set `moduleResolution` to `bundler`, add the following to
|
|
|
101
101
|
}
|
|
102
102
|
```
|
|
103
103
|
|
|
104
|
-
This configuration enables proper module resolution for the component's TypeScript files.
|
|
105
|
-
|
|
104
|
+
This configuration enables proper module resolution for the component's TypeScript files.
|
|
105
|
+
|
|
106
106
|
### Basic HTML Example
|
|
107
107
|
|
|
108
108
|
Here is an example of how to use the Auro Checkbox component in your HTML:
|
|
@@ -112,8 +112,8 @@ Here is an example of how to use the Auro Checkbox component in your HTML:
|
|
|
112
112
|
```html
|
|
113
113
|
<script type="module">
|
|
114
114
|
import "@aurodesignsystem/auro-formkit/auro-checkbox";
|
|
115
|
-
</script>
|
|
116
|
-
```
|
|
115
|
+
</script>
|
|
116
|
+
```
|
|
117
117
|
|
|
118
118
|
`index.html -> <body>`
|
|
119
119
|
|
|
@@ -128,24 +128,24 @@ Here is an example of how to use the Auro Checkbox component in your HTML:
|
|
|
128
128
|
<auro-checkbox value="value2" name="basic" id="checkbox-basic2" checked>
|
|
129
129
|
Checkbox option two
|
|
130
130
|
</auro-checkbox>
|
|
131
|
-
</auro-checkbox-group>
|
|
132
|
-
```
|
|
131
|
+
</auro-checkbox-group>
|
|
132
|
+
```
|
|
133
133
|
|
|
134
134
|
By following these steps, you can easily integrate Auro Formkit components into your project.
|
|
135
|
-
<!-- AURO-GENERATED-CONTENT:END -->
|
|
136
|
-
|
|
135
|
+
<!-- AURO-GENERATED-CONTENT:END -->
|
|
136
|
+
|
|
137
137
|
### Design Token CSS Custom Property dependency
|
|
138
138
|
|
|
139
139
|
<!-- AURO-GENERATED-CONTENT:START (REMOTE:url=https://raw.githubusercontent.com/AlaskaAirlines/WC-Generator/master/componentDocs/partials/development/designTokens.md) -->
|
|
140
140
|
The use of any Auro custom element has a dependency on the [Auro Design Tokens](https://auro.alaskaair.com/getting-started/developers/design-tokens).
|
|
141
141
|
|
|
142
|
-
<!-- AURO-GENERATED-CONTENT:END -->
|
|
143
|
-
|
|
142
|
+
<!-- AURO-GENERATED-CONTENT:END -->
|
|
143
|
+
|
|
144
144
|
## Development
|
|
145
145
|
|
|
146
146
|
<!-- AURO-GENERATED-CONTENT:START (FILE:src=./docs/partials/developmentDescription.md) -->
|
|
147
|
-
<!-- The below content is automatically added from ./docs/partials/developmentDescription.md -->
|
|
148
|
-
|
|
147
|
+
<!-- The below content is automatically added from ./docs/partials/developmentDescription.md -->
|
|
148
|
+
|
|
149
149
|
### Filtering
|
|
150
150
|
|
|
151
151
|
Running the `dev` command will open a `localhost` development server for all components in the monorepo at once.
|
|
@@ -155,24 +155,24 @@ To only develop a single component, use the `--filter` flag:
|
|
|
155
155
|
```shell
|
|
156
156
|
npx turbo dev --filter=@aurodesignsystem/auro-input
|
|
157
157
|
```
|
|
158
|
-
<!-- AURO-GENERATED-CONTENT:END -->
|
|
159
|
-
|
|
158
|
+
<!-- AURO-GENERATED-CONTENT:END -->
|
|
159
|
+
|
|
160
160
|
### Start development environment
|
|
161
161
|
|
|
162
162
|
<!-- AURO-GENERATED-CONTENT:START (FILE:src=./docs/partials/localhost.md) -->
|
|
163
|
-
<!-- The below content is automatically added from ./docs/partials/localhost.md -->
|
|
164
|
-
|
|
163
|
+
<!-- The below content is automatically added from ./docs/partials/localhost.md -->
|
|
164
|
+
|
|
165
165
|
## Local Development
|
|
166
|
-
<!-- AURO-GENERATED-CONTENT:END -->
|
|
167
|
-
|
|
166
|
+
<!-- AURO-GENERATED-CONTENT:END -->
|
|
167
|
+
|
|
168
168
|
### Testing
|
|
169
169
|
|
|
170
170
|
<!-- AURO-GENERATED-CONTENT:START (FILE:src=./docs/partials/testing.md) -->
|
|
171
|
-
<!-- The below content is automatically added from ./docs/partials/testing.md -->
|
|
172
|
-
```
|
|
171
|
+
<!-- The below content is automatically added from ./docs/partials/testing.md -->
|
|
172
|
+
```
|
|
173
173
|
npm run test
|
|
174
|
-
```
|
|
175
|
-
|
|
174
|
+
```
|
|
175
|
+
|
|
176
176
|
#### Port configuration
|
|
177
177
|
|
|
178
178
|
Turbo will attempt to test components in parallel which will lead to port conflicts.
|
|
@@ -184,29 +184,29 @@ Setting the `concurrency` to `1` will prevent Turbo from running tests in parall
|
|
|
184
184
|
```
|
|
185
185
|
|
|
186
186
|
`turbo.json`does not support `--concurrency` yet. See [this issue](https://github.com/vercel/turborepo/discussions/7493).
|
|
187
|
-
<!-- AURO-GENERATED-CONTENT:END -->
|
|
187
|
+
<!-- AURO-GENERATED-CONTENT:END -->
|
|
188
188
|
<!-- AURO-GENERATED-CONTENT:START (FILE:src=./docs/partials/readmeAddlInfo.md) -->
|
|
189
|
-
<!-- The below content is automatically added from ./docs/partials/readmeAddlInfo.md -->
|
|
190
|
-
|
|
189
|
+
<!-- The below content is automatically added from ./docs/partials/readmeAddlInfo.md -->
|
|
190
|
+
|
|
191
191
|
## Turborepo Overview
|
|
192
192
|
|
|
193
|
-
This monorepo is managed using [Turborepo](https://turborepo.org/).
|
|
194
|
-
|
|
195
|
-
### Managing dependencies
|
|
196
|
-
|
|
193
|
+
This monorepo is managed using [Turborepo](https://turborepo.org/).
|
|
194
|
+
|
|
195
|
+
### Managing dependencies
|
|
196
|
+
|
|
197
197
|
#### Best practices for dependency installation
|
|
198
198
|
|
|
199
199
|
When you install a dependency in a component or package in `auro-formkit`, you should install it directly in the package that uses it.
|
|
200
200
|
|
|
201
|
-
The package's `package.json` will have every dependency that it needs. This is true for both external and internal dependencies.
|
|
202
|
-
|
|
203
|
-
### Types of Dependencies by Source
|
|
204
|
-
|
|
201
|
+
The package's `package.json` will have every dependency that it needs. This is true for both external and internal dependencies.
|
|
202
|
+
|
|
203
|
+
### Types of Dependencies by Source
|
|
204
|
+
|
|
205
205
|
#### External Dependencies
|
|
206
206
|
- These are packages fetched from the `npm` registry (e.g., Lit, Rollup, Sass)
|
|
207
207
|
- Declared in `package.json` using exact versions or version ranges
|
|
208
|
-
- Installed in `node_modules` during `npm install` or `yarn install`
|
|
209
|
-
|
|
208
|
+
- Installed in `node_modules` during `npm install` or `yarn install`
|
|
209
|
+
|
|
210
210
|
#### Internal Dependencies
|
|
211
211
|
- These are packages from within the `auro-formkit` monorepo
|
|
212
212
|
- Allow sharing code between different packages in your repository
|
|
@@ -214,8 +214,8 @@ The package's `package.json` will have every dependency that it needs. This is t
|
|
|
214
214
|
- Must be declared in `package.json` just like external dependencies
|
|
215
215
|
- Use workspace protocols (e.g., `"workspace:*"` or `"workspace:^1.0.0"`)
|
|
216
216
|
|
|
217
|
-
### Types of Dependencies by Purpose
|
|
218
|
-
|
|
217
|
+
### Types of Dependencies by Purpose
|
|
218
|
+
|
|
219
219
|
#### Dependencies (`dependencies`)
|
|
220
220
|
- Required for the package to function in production
|
|
221
221
|
- Example:
|
|
@@ -226,8 +226,8 @@ The package's `package.json` will have every dependency that it needs. This is t
|
|
|
226
226
|
"@auro-formkit/input": "workspace:*" // Internal dependency
|
|
227
227
|
}
|
|
228
228
|
}
|
|
229
|
-
```
|
|
230
|
-
|
|
229
|
+
```
|
|
230
|
+
|
|
231
231
|
#### Peer Dependencies (`peerDependencies`)
|
|
232
232
|
- Packages that your library expects the consuming application to provide
|
|
233
233
|
- Common for plugins or UI component libraries
|
|
@@ -239,8 +239,8 @@ The package's `package.json` will have every dependency that it needs. This is t
|
|
|
239
239
|
"react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0"
|
|
240
240
|
}
|
|
241
241
|
}
|
|
242
|
-
```
|
|
243
|
-
|
|
242
|
+
```
|
|
243
|
+
|
|
244
244
|
### Development Dependencies (`devDependencies`)
|
|
245
245
|
- Only needed during development, testing, or building
|
|
246
246
|
- Not included in the production bundle
|
|
@@ -252,8 +252,8 @@ The package's `package.json` will have every dependency that it needs. This is t
|
|
|
252
252
|
"@open-wc/testing": "^4.0.0" // Internal dev dependency
|
|
253
253
|
}
|
|
254
254
|
}
|
|
255
|
-
```
|
|
256
|
-
|
|
255
|
+
```
|
|
256
|
+
|
|
257
257
|
## Example: Component Dependencies
|
|
258
258
|
|
|
259
259
|
Let's use `@auro-formki/combobox` as an example to illustrate these concepts:
|
|
@@ -264,10 +264,10 @@ Let's use `@auro-formki/combobox` as an example to illustrate these concepts:
|
|
|
264
264
|
"dependencies": {
|
|
265
265
|
// Internal dependencies
|
|
266
266
|
"@aurodesignsystem/auro-dropdown": "*", // Required UI component
|
|
267
|
-
"@aurodesignsystem/auro-input": "*", // Required UI component
|
|
268
|
-
|
|
267
|
+
"@aurodesignsystem/auro-input": "*", // Required UI component
|
|
268
|
+
|
|
269
269
|
// External dependencies
|
|
270
|
-
"@alaskaairux/icons": "^
|
|
270
|
+
"@alaskaairux/icons": "^5.3.0", // Required UI component
|
|
271
271
|
"lit": "^3.2.1" // Framework
|
|
272
272
|
},
|
|
273
273
|
"peerDependencies": {
|
|
@@ -302,8 +302,8 @@ This practice has several benefits:
|
|
|
302
302
|
|
|
303
303
|
- **Pruning unused dependencies:** When dependencies are installed in the packages that they are meant for, Turborepo can read your lockfile and remove dependencies that aren't used in the packages you need.
|
|
304
304
|
|
|
305
|
-
For more information, see the [Turborepo docs](https://turbo.build/repo/docs/crafting-your-repository/managing-dependencies).
|
|
306
|
-
|
|
305
|
+
For more information, see the [Turborepo docs](https://turbo.build/repo/docs/crafting-your-repository/managing-dependencies).
|
|
306
|
+
|
|
307
307
|
### Root `package.json`
|
|
308
308
|
|
|
309
309
|
The only dependencies that belong in the root `package.json` are **tools for managing the repository**.
|
|
@@ -311,4 +311,4 @@ The only dependencies that belong in the root `package.json` are **tools for man
|
|
|
311
311
|
Some examples of dependencies that make sense to install in the root are `turbo`, `husky`, or `stylelint`.
|
|
312
312
|
|
|
313
313
|
Conversely, dependencies Auro components rely on should be installed in their respective packages, such as `Lit`, `Rollup`, or other `auro-formkit` dependencies.
|
|
314
|
-
<!-- AURO-GENERATED-CONTENT:END -->
|
|
314
|
+
<!-- AURO-GENERATED-CONTENT:END -->
|
|
@@ -106,7 +106,7 @@ The use of any Auro custom element has a dependency on the [Auro Design Tokens](
|
|
|
106
106
|
In cases where the project is not able to process JS assets, there are pre-processed assets available for use. Legacy browsers such as IE11 are no longer supported.
|
|
107
107
|
|
|
108
108
|
```html
|
|
109
|
-
<script type="module" src="https://cdn.jsdelivr.net/npm/@aurodesignsystem/auro-formkit@2.2.1-beta.
|
|
109
|
+
<script type="module" src="https://cdn.jsdelivr.net/npm/@aurodesignsystem/auro-formkit@2.2.1-beta.2/auro-checkbox/+esm"></script>
|
|
110
110
|
```
|
|
111
111
|
<!-- AURO-GENERATED-CONTENT:END -->
|
|
112
112
|
|
|
@@ -106,7 +106,7 @@ The use of any Auro custom element has a dependency on the [Auro Design Tokens](
|
|
|
106
106
|
In cases where the project is not able to process JS assets, there are pre-processed assets available for use. Legacy browsers such as IE11 are no longer supported.
|
|
107
107
|
|
|
108
108
|
```html
|
|
109
|
-
<script type="module" src="https://cdn.jsdelivr.net/npm/@aurodesignsystem/auro-formkit@2.2.1-beta.
|
|
109
|
+
<script type="module" src="https://cdn.jsdelivr.net/npm/@aurodesignsystem/auro-formkit@2.2.1-beta.2/auro-checkbox/+esm"></script>
|
|
110
110
|
```
|
|
111
111
|
<!-- AURO-GENERATED-CONTENT:END -->
|
|
112
112
|
|
|
@@ -111,7 +111,7 @@ The use of any Auro custom element has a dependency on the [Auro Design Tokens](
|
|
|
111
111
|
In cases where the project is not able to process JS assets, there are pre-processed assets available for use. Legacy browsers such as IE11 are no longer supported.
|
|
112
112
|
|
|
113
113
|
```html
|
|
114
|
-
<script type="module" src="https://cdn.jsdelivr.net/npm/@aurodesignsystem/auro-formkit@2.2.1-beta.
|
|
114
|
+
<script type="module" src="https://cdn.jsdelivr.net/npm/@aurodesignsystem/auro-formkit@2.2.1-beta.2/auro-combobox/+esm"></script>
|
|
115
115
|
```
|
|
116
116
|
<!-- AURO-GENERATED-CONTENT:END -->
|
|
117
117
|
|