Skip to content

Commit 1ce413c

Browse files
Merge branch 'dev' into 'master'
Dev See merge request awes/wiki!14
2 parents 99c6f66 + 99a7dc2 commit 1ce413c

File tree

6 files changed

+259
-34
lines changed

6 files changed

+259
-34
lines changed

docs/components/filter-wrapper/1.0/filter-wrapper.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ Here is the implementation of the <filter-wrapper> component:
3232
| **name** | `String` | filter-${uid} | Unique identifier (ID) |
3333
| **send-text** | `String` | `Apply` | Text in the “Apply” button |
3434
| **reset-text** | `String` | `Reset` | Text in the “Reset” button |
35+
| **auto-submit**| `Boolean` | `undefined` | If `true` the filter will be applied on fields value change |
3536

3637
The filter has an *active state (Boolean)*, namely there are such parameters in the address bar which match the field names in the filter. You can get this value from the storage in the `$awesFilters` variable by the filter name, for example:
3738

docs/components/form-builder/1.5/fb-date-range.md

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -45,14 +45,14 @@ The component uses [Tiny Date Range Picker](https://github.com/chrisdavies/tiny-
4545
|---------------------|:------------------:|:-------------------:|---------------------------------------------------|
4646
| **name** | `String` | `undefined` | Field identifier in the data object |
4747
| **id** | `Number` | `undefined` | Sequence number within the &lt;fb-multi-block&gt; component |
48-
| **labelStart** | `String` | `'Start date'` | Text in the &lt;label&gt; element for 1st field |
49-
| **labelEnd** | `String` | `'End date'` | Text in the &lt;label&gt; element for 2nd field |
48+
| **label-start** | `String` | `'Start date'` | Text in the &lt;label&gt; element for 1st field |
49+
| **label-end** | `String` | `'End date'` | Text in the &lt;label&gt; element for 2nd field |
5050
| **min** | `String`, `Number`, `Object` | calculated according to **yearRange** prop and current date | Minimal selectable date |
5151
| **max** | `String`, `Number`, `Object` | calculated according to **yearRange** prop and current date | Maximal selectable date |
52-
| **yearRange** | `Number` | `4` | Max year offset back and forth from current day, if **min** or **max** is not provided |
53-
| **dayOffset** | `Number` | `1` | Set this to 0 for Sunday. 1 is for Monday |
54-
| **valueStart** | `String` | `undefined` | Selected start date |
55-
| **valueEnd** | `String` | `undefined` | Selected end date |
52+
| **year-range** | `Number` | `4` | Max year offset back and forth from current day, if **min** or **max** is not provided |
53+
| **day-offset** | `Number` | `1` | Set this to 0 for Sunday. 1 is for Monday |
54+
| **value-start** | `String` | `undefined` | Selected start date |
55+
| **value-end** | `String` | `undefined` | Selected end date |
5656
| **format** | `String` | 'MM/DD/YYYY' | Date format for input fields |
5757
| **disabled** | `Boolean` | `false` | Are the inputs disabled |
5858
| **lang** | `Object` | see [lang object](#date-lang-object) | Language strings for current instance. Will be merged with defaults |
@@ -65,16 +65,20 @@ The **value** property could only be a date in ISO String format
6565
## Usage examples
6666

6767
```html
68-
<!-- setting min and max dates -->
69-
<fb-date-range min="2019-05-09" max="2019-06-20" value-start="2019-05-15" value-end="2019-06-06"></fb-date-range>
68+
<form-builder url="http://httpbin.org/post" disabled-dialog>
69+
70+
<!-- setting min and max dates -->
71+
<fb-date-range name="range" min="2019-05-09" max="2019-06-20" value-start="2019-05-15" value-end="2019-06-06"></fb-date-range>
7072

71-
<!-- disabling inputs -->
72-
<fb-date-range min="2019-05-09" max="2019-06-20" disabled></fb-date-range>
73+
<!-- disabling inputs -->
74+
<fb-date-range name="range-disabled" min="2019-05-09" max="2019-06-20" disabled></fb-date-range>
75+
76+
</form-builder>
7377
```
7478
<div class="vue-example">
7579
<form-builder url="http://httpbin.org/post" disabled-dialog>
76-
<fb-date-range name="one" min="2019-05-09" max="2019-06-20" value-start="2019-05-15" value-end="2019-06-06"></fb-date-range>
77-
<fb-date-range name="two" min="2019-05-09" max="2019-06-20" disabled></fb-date-range>
80+
<fb-date-range name="range" min="2019-05-09" max="2019-06-20" value-start="2019-05-15" value-end="2019-06-06"></fb-date-range>
81+
<fb-date-range name="range-disabled" min="2019-05-09" max="2019-06-20" disabled></fb-date-range>
7882
</form-builder>
7983
</div>
8084

docs/components/form-builder/1.5/fb-date.md

Lines changed: 29 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -48,10 +48,10 @@ The component uses [Tiny Date Picker](https://github.com/chrisdavies/tiny-date-p
4848
| **label** | `String` | `''` | Text in the &lt;label&gt; element |
4949
| **min** | `String`, `Number`, `Object` | calculated according to **yearRange** prop and current date | Minimal selectable date |
5050
| **max** | `String`, `Number`, `Object` | calculated according to **yearRange** prop and current date | Maximal selectable date |
51-
| **yearRange** | `Number` | `4` | Max year offset back and forth from current day, if **min** or **max** is not provided |
52-
| **dayOffset** | `Number` | `1` | Set this to 0 for Sunday. 1 is for Monday |
51+
| **year-range** | `Number` | `4` | Max year offset back and forth from current day, if **min** or **max** is not provided |
52+
| **day-offset** | `Number` | `1` | Set this to 0 for Sunday. 1 is for Monday |
5353
| **value** | `String` | `undefined` | Selected date (only stringified Date object) |
54-
| **timeRange** | `Boolean`, `Object`| `true` | See [time range](#time-range-props) props |
54+
| **time-range** | `Boolean`, `Object`| `true` | See [time range](#time-range-props) props |
5555
| **format** | `String` | 'MM/DD/YYYY' or 'MM/DD/YYYY HH:mm' with time range | Date format for input field |
5656
| **disabled** | `Boolean`, `Array` | `false` | `Boolean` to disable whole field and `Array` of dates to disable specific date |
5757
| **lang** | `Object` | see [lang object](#date-lang-object) | Language strings for current instance. Will be merged with defaults |
@@ -81,40 +81,49 @@ To set time, it should be passed to the **value** prop of `fb-`
8181
Picking specific interval
8282

8383
```html
84-
<!-- setting min and max dates -->
85-
<fb-date label="Pick a date" min="2019-05-09" max="2019-06-20" value="2019-05-20"></fb-date>
84+
<form-builder url="http://httpbin.org/post">
8685

87-
<!-- disabling specific dates -->
88-
<fb-date label="Pick a date" min="2019-05-09" max="2019-06-20" value="2019-05-20" :disabled="['2019-05-22', '2019-05-23']"></fb-date>
86+
<!-- setting min and max dates -->
87+
<fb-date name="date-minmax" label="Pick a date" min="2019-05-09" max="2019-06-20" value="2019-05-20"></fb-date>
88+
89+
<!-- disabling specific dates -->
90+
<fb-date name="date-disabled" label="Pick a date" min="2019-05-09" max="2019-06-20" value="2019-05-20" :disabled="['2019-05-22', '2019-05-23']"></fb-date>
91+
92+
</form-builder>
8993
```
9094
<div class="vue-example">
9195
<form-builder url="http://httpbin.org/post" disabled-dialog>
92-
<fb-date label="Pick a date" min="2019-05-09" max="2019-06-20" value="2019-05-20"></fb-date>
93-
<fb-date label="Pick a date" min="2019-05-09" max="2019-06-20" value="2019-05-20" :disabled="['2019-05-22', '2019-05-23']"></fb-date>
96+
<fb-date name="date1" label="Pick a date" min="2019-05-09" max="2019-06-20" value="2019-05-20"></fb-date>
97+
<fb-date name="date2" label="Pick a date" min="2019-05-09" max="2019-06-20" value="2019-05-20" :disabled="['2019-05-22', '2019-05-23']"></fb-date>
9498
</form-builder>
9599
</div>
96100

97101
Configuring time range
98102

99103
```html
100-
<!-- not rendered entirely -->
101-
<fb-date label="No time" :time-range="false"></fb-date>
104+
<form-builder url="http://httpbin.org/post">
102105

103-
<!-- configuring time range -->
104-
<fb-date label="Configured time range" :time-range="{min: '09:00', max: '10:20', step: 10}"></fb-date>
106+
<!-- not rendered entirely -->
107+
<fb-date name="no-time" label="No time" :time-range="false"></fb-date>
105108

106-
<!-- setting specific time buttons to disabled state -->
107-
<fb-date label="Disabled time" :time-range="{ disabled: ['09:10', '10:00'] }"></fb-date>
109+
<!-- configuring time range -->
110+
<fb-date name="time-minmax" label="Configured time range" :time-range="{min: '09:00', max: '10:20', step: 10}"></fb-date>
108111

109-
<!-- setting time on current date (only stringified date is accepted) -->
110-
<fb-date label="Selected time" :value="new Date(new Date().setHours(9, 30)).toUTCString()" :time-range="{min: '08:00'}"></fb-date>
112+
<!-- setting specific time buttons to disabled state -->
113+
<fb-date name="time-disabled" label="Disabled time" :time-range="{ disabled: ['09:30', '10:00'] }"></fb-date>
114+
115+
<!-- setting time on current date (only stringified date is accepted) -->
116+
<fb-date name="time-selected" label="Selected time" :value="new Date(new Date().setHours(9, 30)).toUTCString()" :time-range="{min: '08:00'}"></fb-date>
117+
118+
</form-builder>
111119
```
112120

113121
<div class="vue-example">
114122
<form-builder url="http://httpbin.org/post" disabled-dialog>
115-
<fb-date label="Pick a date" min="2019-05-09" max="2019-06-20" value="2019-05-20"></fb-date>
116-
<fb-date label="Configured time range" :time-range="{min: '09:00', max: '10:20', step: 10, value}"></fb-date>
117-
<fb-date label="Disabled time" :time-range="{ disabled: ['09:10', '10:00'] }"></fb-date>
123+
<fb-date name="no-time" label="No time" :time-range="false"></fb-date>
124+
<fb-date name="time-minmax" label="Configured time range" :time-range="{min: '09:00', max: '10:20', step: 10}"></fb-date>
125+
<fb-date name="time-disabled" label="Disabled time" :time-range="{ disabled: ['09:30', '10:00'] }"></fb-date>
126+
<fb-date name="time-selected" label="Selected time" :value="new Date(new Date().setHours(9, 30)).toUTCString()" :time-range="{min: '08:00'}"></fb-date>
118127
</form-builder>
119128
</div>
120129

docs/components/indigo-layout/1.9/components.md

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -226,3 +226,36 @@ Ready-to-use Blade components and directives.
226226
@endtable
227227
```
228228

229+
## Search form
230+
231+
Search form is a `&lt;filter-wrapper&gt;` component with additional CSS-class for stylization.
232+
233+
Basic markup
234+
235+
```html
236+
<filter-wrapper class="is-search" send-text="Search">
237+
<fb-input name="query" placeholder="Search"></fb-input>
238+
</filter-wrapper>
239+
```
240+
241+
<div class="vue-example">
242+
<filter-wrapper class="is-search" send-text="Search">
243+
<fb-input name="query" placeholder="Search"></fb-input>
244+
</filter-wrapper>
245+
</div>
246+
247+
To create a live submitting form, add an `auto-submit` prop. This will also hide form buttons.
248+
249+
By default all input elements send value with 300ms debounce. This value is controlled on the `&lt;fb-input&gt;` component
250+
251+
```html
252+
<filter-wrapper class="is-search" send-text="Search" auto-submit>
253+
<fb-input name="query" placeholder="Search" :debounce="1000"></fb-input>
254+
</filter-wrapper>
255+
```
256+
257+
<div class="vue-example">
258+
<filter-wrapper class="is-search" send-text="Search" auto-submit>
259+
<fb-input name="query" placeholder="Search" :debounce="1000"></fb-input>
260+
</filter-wrapper>
261+
</div>
Lines changed: 106 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,106 @@
1+
# Localization Helper
2+
3+
Package for convenient work with Laravel's localization features and fast language files generation.
4+
5+
## Installation
6+
7+
Via Composer
8+
9+
``` bash
10+
$ composer require awes-io/localization-helper
11+
```
12+
13+
In Laravel 5.5+, service provider and facade will be automatically registered. For older versions, follow the steps below:
14+
15+
Register service provider in `config/app.php`:
16+
17+
```php
18+
'providers' => [
19+
// [...]
20+
AwesIO\LocalizationHelper\LocalizationHelperServiceProvider::class,
21+
],
22+
```
23+
24+
You may also register `LaravelLocalization` facade:
25+
26+
```php
27+
'aliases' => [
28+
// [...]
29+
'LocalizationHelper' => AwesIO\LocalizationHelper\Facades\LocalizationHelper::class,
30+
],
31+
```
32+
33+
## Config
34+
35+
### Config Files
36+
37+
In order to edit default configuration you may execute:
38+
39+
```
40+
php artisan vendor:publish --provider="AwesIO\LocalizationHelper\LocalizationHelperServiceProvider"
41+
```
42+
43+
After that, `config/localizationhelper.php` will be created.
44+
45+
## Usage
46+
47+
Package registers global helper function `_p($file_key, $default, $placeholders)`:
48+
49+
```php
50+
_p('auth.login', 'Login'); // "Login"
51+
```
52+
53+
It will create new localization file `auth.php` (if it doesn't exist) for fallback locale and write second parameter as language string under `login` key:
54+
55+
```php
56+
return [
57+
"login" => "Login"
58+
];
59+
```
60+
61+
Array can be used as default value:
62+
63+
```php
64+
_p('auth.login', ['en' => 'Login', 'fr' => 'Connexion']);
65+
```
66+
67+
It will create files `auth.php` for every locale from array keys and write array value as language string.
68+
69+
On second call with same file/key `_p('auth.login')`, localization string will be returned, file will remain untouched.
70+
71+
Placeholders are also supported:
72+
73+
```php
74+
_p(
75+
'mail.invitation',
76+
'You’re invited to join :company company workspace',
77+
['company' => 'Awesio']
78+
);
79+
```
80+
81+
If key is returned, it means that string already exists in localization file and you are trying to add new one using its value as an array.
82+
83+
```php
84+
// in localization file.php
85+
return [
86+
"test" => "Test string"
87+
];
88+
89+
_p('file.test.new', 'Test string'); // will return "file.test.new"
90+
91+
_p('file.test_2.new', 'Test string'); // will return "Test string"
92+
93+
// and modify localization file:
94+
return [
95+
"test" => "Test string",
96+
"test_2" => [
97+
"new" => "Test string"
98+
]
99+
];
100+
```
101+
102+
## Testing
103+
104+
``` bash
105+
$ composer test
106+
```

docs/components/modal-window/1.1/index.md

Lines changed: 74 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ It is a modal window component with a tracked history. Below you will see a visu
1313
import Vue from 'vue'
1414
import VueRouter from 'vue-router' // required
1515
import modalWindow from '@awes-io/modal-window'
16-
import '@awes-io/modal-windwo/dist/main.css' // optionally, for default styling
16+
import '@awes-io/modal-window/dist/main.css' // optionally, for default styling
1717

1818
Vue.use(VueRouter) // required
1919
Vue.use(modalWindow, { /* optional config */}) // registers `<modal-window>` component globally
@@ -55,8 +55,24 @@ include CDN-script, provided by the [platform](//awes.io)
5555
| **theme** | `String` | `'default'` | Styling modal appearance, simply adds additional class to the wrapper, e.g. `is-${theme}` |
5656
| **param** | `String` | `'modal'` | GET-parameter, that recieves a value of **name** param when window is opened. All the modals? by default, share the same GET-param. This means opening next modal closes previouse. |
5757
| **stay** | `Boolean` | `false` | Should the content stay in markup, when window is closed. *Could be configured globally* |
58+
| **bg-сlick-сlose** | `Boolean` | `true` | Should the modal be closed by clicking on background. *Could be configured globally* |
5859
| **lang** | `Object` | [lang](#mw-lang) | Overwrite default lang strings in current modal. *Could be configured globally* |
5960

61+
The properties, marked as **globally configured**, could be provided in `AWES_CONFIG` in camelCase. For example:
62+
63+
```javascript
64+
const AWES_CONFIG = {
65+
66+
// some other config...
67+
68+
modalWindow: {
69+
stay: true,
70+
bgClickClose: false,
71+
// ... other options
72+
}
73+
}
74+
```
75+
6076

6177
### Modal window ID
6278

@@ -187,4 +203,60 @@ Transition styling colud be done with proper [Vue transition component classes](
187203
* modal-transition-awesome-enter-to
188204
* modal-transition-awesome-leave
189205
* modal-transition-awesome-leave-active
190-
* modal-transition-awesome-leave-to
206+
* modal-transition-awesome-leave-to
207+
208+
209+
## AJAX modal example
210+
211+
To show dynamically loading content, place a `&lt;content-wrapper/&gt;` component inside a modal.
212+
213+
> Note, that by default, content will be loaded **each time** modal is opened.
214+
> But if you use modal with `stay` prop turned on - content will be loaded **once**, after the page load
215+
216+
```html
217+
<modal-window name="ajax-example" title="AJAX modal">
218+
219+
<!-- dynamic content -->
220+
<content-wrapper url="https://jsonplaceholder.typicode.com/users">
221+
222+
<!-- loading state stylization -->
223+
<template slot="loading">
224+
<div class="h1 text-center">Loading...</div>
225+
</template>
226+
227+
<!-- content -->
228+
<template slot-scope="ajaxData">
229+
<table-builder :default="ajaxData.data">
230+
<tb-column name="name"></tb-column>
231+
<tb-column name="email">
232+
<template slot-scope="col">
233+
<a :href="`mailto:${col.data.email}`">{{ col.data.email }}</a>
234+
</template>
235+
</tb-column>
236+
</table-builder>
237+
</template><!-- / content -->
238+
239+
</content-wrapper>
240+
</modal-window>
241+
```
242+
243+
<div class="vue-example">
244+
<button class="btn" @click="AWES.emit('modal::ajax-example:open')">AJAX modal</button>
245+
<modal-window name="ajax-example" title="AJAX modal">
246+
<content-wrapper url="https://jsonplaceholder.typicode.com/users">
247+
<template slot="loading">
248+
<div class="h1 text-center">Loading...</div>
249+
</template>
250+
<template slot-scope="ajaxData">
251+
<table-builder :default="ajaxData.data">
252+
<tb-column name="name"></tb-column>
253+
<tb-column name="email">
254+
<template slot-scope="col">
255+
<a :href="`mailto:${col.data.email}`">{{ col.data.email }}</a>
256+
</template>
257+
</tb-column>
258+
</table-builder>
259+
</template>
260+
</content-wrapper>
261+
</modal-window>
262+
</div>

0 commit comments

Comments
 (0)