chore(reorder): move reorder-group to separate directory

This commit is contained in:
Adam Bradley
2017-11-28 20:29:01 -06:00
parent c5211c33a1
commit 38023b59dc
7 changed files with 146 additions and 144 deletions

View File

@ -2318,7 +2318,7 @@ declare global {
import { import {
ReorderGroup as IonReorderGroup ReorderGroup as IonReorderGroup
} from './components/reorder/reorder-group'; } from './components/reorder-group/reorder-group';
declare global { declare global {
interface HTMLIonReorderGroupElement extends IonReorderGroup, HTMLElement { interface HTMLIonReorderGroupElement extends IonReorderGroup, HTMLElement {

View File

@ -0,0 +1,139 @@
# ion-reorder-group
Item reorder adds the ability to change an item's order in a group.
It can be used within an `ion-list` or `ion-item-group` to provide a
visual drag and drop interface.
## Grouping Items
All reorderable items must be grouped in the same element. If an item
should not be reordered, it shouldn't be included in this group. For
example, the following code works because the items are grouped in the
`<ion-list>`:
```html
<ion-list reorder="true">
<ion-itemngFor="let item of items">{% raw %}{{ item }}{% endraw %}</ion-item>
</ion-list>
```
However, the below list includes a header that shouldn't be reordered:
```html
<ion-list reorder="true">
<ion-list-header>Header</ion-list-header>
<ion-itemngFor="let item of items">{% raw %}{{ item }}{% endraw %}</ion-item>
</ion-list>
```
In order to mix different sets of items, `ion-item-group` should be used to
group the reorderable items:
```html
<ion-list>
<ion-list-header>Header</ion-list-header>
<ion-item-group reorder="true">
<ion-itemngFor="let item of items">{% raw %}{{ item }}{% endraw %}</ion-item>
</ion-item-group>
</ion-list>
```
It's important to note that in this example, the `[reorder]` directive is applied to
the `<ion-item-group>` instead of the `<ion-list>`. This way makes it possible to
mix items that should and shouldn't be reordered.
## Implementing the Reorder Function
When the item is dragged and dropped into the new position, the `(ionItemReorder)` event is
emitted. This event provides the initial index (from) and the new index (to) of the reordered
item. For example, if the first item is dragged to the fifth position, the event will emit
`{from: 0, to: 4}`. Note that the index starts at zero.
A function should be called when the event is emitted that handles the reordering of the items.
See usage below for some examples.
```html
<ion-list>
<ion-list-header>Header</ion-list-header>
<ion-item-group reorder="true" (ionItemReorder)="reorderItems($event)">
<ion-itemngFor="let item of items">{% raw %}{{ item }}{% endraw %}</ion-item>
</ion-item-group>
</ion-list>
```
```ts
class MyComponent {
items = [];
constructor() {
for (let x = 0; x < 5; x++) {
this.items.push(x);
}
}
reorderItems(indexes) {
let element = this.items[indexes.from];
this.items.splice(indexes.from, 1);
this.items.splice(indexes.to, 0, element);
}
}
```
Ionic also provides a helper function called `reorderArray` to
reorder the array of items. This can be used instead:
```ts
import { reorderArray } from 'ionic-angular';
class MyComponent {
items = [];
constructor() {
for (let x = 0; x < 5; x++) {
this.items.push(x);
}
}
reorderItems(indexes) {
this.items = reorderArray(this.items, indexes);
}
}
```
Alternatevely you can execute helper function inside template:
```html
<ion-list>
<ion-list-header>Header</ion-list-header>
<ion-item-group reorder="true" (ionItemReorder)="$event.applyTo(items)">
<ion-itemngFor="let item of items">{% raw %}{{ item }}{% endraw %}</ion-item>
</ion-item-group>
</ion-list>
```
<!-- Auto Generated Below -->
## Properties
#### enabled
boolean
## Attributes
#### enabled
boolean
----------------------------------------------
*Built by [StencilJS](https://stenciljs.com/)*

View File

@ -2,8 +2,10 @@
$reorder-initial-transform: 160% !default; $reorder-initial-transform: 160% !default;
// Reorder group general
// Reorder Group
// -------------------------------------------------- // --------------------------------------------------
ion-reorder-group > ion-gesture { ion-reorder-group > ion-gesture {
display: block; display: block;
} }
@ -23,10 +25,6 @@ ion-reorder-group > ion-gesture {
transition: none !important; transition: none !important;
} }
// Reorder icon
// --------------------------------------------------
ion-reorder.no-hide { ion-reorder.no-hide {
display: block; display: block;

View File

@ -17,131 +17,9 @@ export class ReorderIndexes {
} }
} }
/**
* @name ReorderGroup
* @description
* Item reorder adds the ability to change an item's order in a group.
* It can be used within an `ion-list` or `ion-item-group` to provide a
* visual drag and drop interface.
*
* ## Grouping Items
*
* All reorderable items must be grouped in the same element. If an item
* should not be reordered, it shouldn't be included in this group. For
* example, the following code works because the items are grouped in the
* `<ion-list>`:
*
* ```html
* <ion-list reorder="true">
* <ion-item *ngFor="let item of items">{% raw %}{{ item }}{% endraw %}</ion-item>
* </ion-list>
* ```
*
* However, the below list includes a header that shouldn't be reordered:
*
* ```html
* <ion-list reorder="true">
* <ion-list-header>Header</ion-list-header>
* <ion-item *ngFor="let item of items">{% raw %}{{ item }}{% endraw %}</ion-item>
* </ion-list>
* ```
*
* In order to mix different sets of items, `ion-item-group` should be used to
* group the reorderable items:
*
* ```html
* <ion-list>
* <ion-list-header>Header</ion-list-header>
* <ion-item-group reorder="true">
* <ion-item *ngFor="let item of items">{% raw %}{{ item }}{% endraw %}</ion-item>
* </ion-item-group>
* </ion-list>
* ```
*
* It's important to note that in this example, the `[reorder]` directive is applied to
* the `<ion-item-group>` instead of the `<ion-list>`. This way makes it possible to
* mix items that should and shouldn't be reordered.
*
*
* ## Implementing the Reorder Function
*
* When the item is dragged and dropped into the new position, the `(ionItemReorder)` event is
* emitted. This event provides the initial index (from) and the new index (to) of the reordered
* item. For example, if the first item is dragged to the fifth position, the event will emit
* `{from: 0, to: 4}`. Note that the index starts at zero.
*
* A function should be called when the event is emitted that handles the reordering of the items.
* See [usage](#usage) below for some examples.
*
*
* @usage
*
* ```html
* <ion-list>
* <ion-list-header>Header</ion-list-header>
* <ion-item-group reorder="true" (ionItemReorder)="reorderItems($event)">
* <ion-item *ngFor="let item of items">{% raw %}{{ item }}{% endraw %}</ion-item>
* </ion-item-group>
* </ion-list>
* ```
*
* ```ts
* class MyComponent {
* items = [];
*
* constructor() {
* for (let x = 0; x < 5; x++) {
* this.items.push(x);
* }
* }
*
* reorderItems(indexes) {
* let element = this.items[indexes.from];
* this.items.splice(indexes.from, 1);
* this.items.splice(indexes.to, 0, element);
* }
* }
* ```
*
* Ionic also provides a helper function called `reorderArray` to
* reorder the array of items. This can be used instead:
*
* ```ts
* import { reorderArray } from 'ionic-angular';
*
* class MyComponent {
* items = [];
*
* constructor() {
* for (let x = 0; x < 5; x++) {
* this.items.push(x);
* }
* }
*
* reorderItems(indexes) {
* this.items = reorderArray(this.items, indexes);
* }
* }
* ```
* Alternatevely you can execute helper function inside template:
*
* ```html
* <ion-list>
* <ion-list-header>Header</ion-list-header>
* <ion-item-group reorder="true" (ionItemReorder)="$event.applyTo(items)">
* <ion-item *ngFor="let item of items">{% raw %}{{ item }}{% endraw %}</ion-item>
* </ion-item-group>
* </ion-list>
* ```
*
* @demo /docs/demos/src/item-reorder/
* @see {@link /docs/components#lists List Component Docs}
* @see {@link ../../list/List List API Docs}
* @see {@link ../Item Item API Docs}
*/
@Component({ @Component({
tag: 'ion-reorder-group', tag: 'ion-reorder-group',
styleUrl: 'reorder.scss' styleUrl: 'reorder-group.scss'
}) })
export class ReorderGroup { export class ReorderGroup {
private selectedItemEl: HTMLElement = null; private selectedItemEl: HTMLElement = null;

View File

@ -5,20 +5,6 @@
<!-- Auto Generated Below --> <!-- Auto Generated Below -->
## Properties
#### enabled
boolean
## Attributes
#### enabled
boolean
---------------------------------------------- ----------------------------------------------

View File

@ -1,5 +1,6 @@
import { Component, Element, State } from '@stencil/core'; import { Component, Element, State } from '@stencil/core';
@Component({ @Component({
tag: 'ion-reorder', tag: 'ion-reorder',
}) })

View File

@ -113,7 +113,7 @@ export { RadioGroup } from './components/radio-group/radio-group';
export { Radio, HTMLIonRadioElementEvent } from './components/radio/radio'; export { Radio, HTMLIonRadioElementEvent } from './components/radio/radio';
export { Range, RangeEvent } from './components/range/range'; export { Range, RangeEvent } from './components/range/range';
export { RangeKnob } from './components/range-knob/range-knob'; export { RangeKnob } from './components/range-knob/range-knob';
export { ReorderGroup } from './components/reorder/reorder-group'; export { ReorderGroup } from './components/reorder-group/reorder-group';
export { export {
RouterEntry, RouterEntry,
RouterEntries, RouterEntries,