@ubuilder/simple
Version:
UBuilder Simple Components
321 lines (268 loc) • 8.13 kB
Markdown
# UBuilder simple components
To use all components:
```javascript
import UBSimple from '@ubuilder/simple';
Vue.use(UBSimple);
```
## UNavbar
rendering navigation data as (prepend slot)? - nav = ul = li* = (ul = li*)? - (append slot)?
### prerequirements
* vue-router
* @ubuilder/auth >= 7.1.1
### usage
```javascript
import { UNavbar } from '@ubuilder/simple';
Vue.use(UNavbar);
```
```html
<u-navbar id="navsample" :data="[ { label: 'label', link: 'router-link to', children: [], permission: 'PERM'}]" />
```
## properties
```javascript
NavData = {
label: String,
link: String?,
children: [NavData]?,
permission: String?,
exact: Boolean?,
};
```
* data: \[NavData\]
### slots
prepend, append
## Combo, CheckCombo
Renders select combo.
Combo added @7.1.4
CheckCombo not implemented yet.
### usage
```javascript
import { UCombo, UCheckCombo } from '@ubuilder/simple';
Vue.use(UCombo);
Vue.use(UCheckCombo);
```
```html
<u-combo :data="[ { text: 'name', value: 'value' } ]" textKey="text" valueKey="value" v-model="String" placeholder="select one" />
<u-check-combo :data="[ { name: 'name', v: 'value' } ]" textKey="name" valueKey="value" v-model="[String]" placeholder="select many" />
```
### properties
* data: \[Object\], required.
* textKey: String, default 'text'.
* valueKey: String, default 'value'.
* placeholder: String, default null. placeholder option always set value to empty string.
* disabled: Boolean, default false.
* required: Boolean, default false.
## Button
Button added @7.1.17
### usage
```javascript
import { UButton } from '@ubuilder/simple';
Vue.use(UButton);
```
```html
<u-button :progress="boolean_value">BUTTON TEXT</u-button>
```
### properties
* type: String, 'submit', 'reset', or 'button'. default 'button'.
* progress: Boolean, default false.
### events
* @click
## Page
UBuilder page checks route.meta.auth permission with current user.
Requirements: vue-router, @ubuilder/auth
Added @7.2.1.
### props
* tag: rendering tag. default value is 'div'. added @7.2.2.
### slots
* default: page contents.
* 401: If user not logged in. Renders <p>Unautorized</p> when not provided.
* 403: If user don't have permssion. Renders <p>Forbidden</p> when not provided.
### usage
```javascript
import { UPage } from '@ubuilder/simple';
Vue.use(UPage);
```
```html
<template>
<u-page>
<p>Here is content.</p>
<template #401>
<p>Login please.</p>
</template>
<template #403>
<p>Not allowed!</p>
</template>
</u-page>
</template>
```
## Table, Pagination and Grid
Added @7.2.3
```javascript
// columns
{
id: 'column id, optional',
label: 'column label',
field: 'column field, optional if use slot',
slot: 'column slot name, if using custom column rendering. props: row, index',
}
// data should array includes object
```
## Modal
Added @7.2.5
## Alert
Added @7.2.5
Renders as section tag contains header, p, footer.
* v-model : active or not, boolean.
* :title : alert title, render in header.
* :message : alert message, render in p.
* :dialogClass : for class of alert section. string or object. default ''. ('u-dialog' implicitly applied)
* :buttonText: button text, render in footer button. string, default 'OK'.
* :buttonClass: button css class, default ''.
* @close : on alert dialog closes event.
* :onClose : same as @close, programmatic api only.
* slot title : header rendering, has title property.
* slot default : p rendering.
### Programmatic Alert
Added @7.2.9
```javascript
import { UAlertProgrammatic } from '@ubuilder/simple';
Vue.use(UAlertProgrammatic);
vm.$ub.alert({
title: 'Alert',
message: 'alert message',
onClose() {
// close event
},
});
```
## Confirm
Added @7.2.5
Renders as section tag contains header, p, footer.
* v-model : active or not, boolean.
* :title : alert title, render in header.
* :message : alert message, render in p.
* :dialogClass : for class of confirm section. string, array or object. default ''. ('u-dialog' implicitly applied)
* :buttonText: confirm button text, render in footer button. string, default 'OK'.
* :buttonClass: confirm button css class, default ''.
* :cancelText: button text, render in footer button. string, default 'Cancel'.
* :cancelClass: cancel button css class, default ''.
* :focusConfirm: boolean, focus on confirm button on present. default value is false, cancel button is focused.
* @confirm : on confirmed.
* @cancel : on canceled.
* :onConfirm : same as @confirm, programmatic api only.
* :onCancel : same as @cancel, programmatic api only.
* slot title : header rendering, has title property.
* slot default : p rendering.
### Programmatic Confirm
Added @7.2.11
```javascript
import { UConfirmProgrammatic } from '@ubuilder/simple';
Vue.use(UConfirmProgrammatic);
vm.$ub.confirm({
title: 'Confirm',
message: 'confirm message',
onConfirm() {
// confirm event
},
onCancel() {
// cancel event
},
});
```
## Prompt
Added @7.2.15
Renders as section tag contains header, p(label-message-input), footer.
* v-model : active or not, boolean.
* :title : alert title, render in header.
* :message : alert message, render in p.
* :placeholder: input placeholder.
* :defaultText: input text on appear.
* :dialogClass : for class of confirm section. string, array or object. default ''. ('u-dialog' implicitly applied)
* :buttonText: confirm button text, render in footer button. string, default 'OK'.
* :buttonClass: confirm button css class, default ''.
* :cancelText: button text, render in footer button. string, default 'Cancel'.
* :cancelClass: cancel button css class, default ''.
* @confirm : on confirmed, first argument is input text.
* @cancel : on canceled.
* :onConfirm : same as @confirm, programmatic api only.
* :onCancel : same as @cancel, programmatic api only.
* slot title : header rendering, has title property.
* slot default : p message rendering.
### Programmatic Prompt
```javascript
import { UPromptProgrammatic } from '@ubuilder/simple';
Vue.use(UPromptProgrammatic);
vm.$ub.prompt({
title: 'Prompt',
message: 'prompt message',
onConfirm(text) {
// confirm event
},
onCancel() {
// cancel event
},
});
```
## Loading
Added @7.2.10
## Tabs
Added @7.3.0
Blank page is slot.
```javascript
import UTabs from '@ubuilder/simple';
```
```scss
@use '@ubuilder/simple/styles/tabs'
```
div.utabs - nav - ul - li.u-tab
.active on active tab
# UBuilder simple styles
Styles on scss.
## global
should use global css on app. normalizes and minimal component styles. all mixins forwarded mixinname-*
```scss
@use '@ubuilder/simple/styles/global';
```
## Mixins
use all mixins by
```scss
@use '@ubuilder/simple/styles/mixin';
```
all mixins forwarded mixinname-*
### color
color with dark mode supports. dark color is inverted lightness of light color.
```scss
@use '@ubuilder/simple/styles/mixin/color';
```
* background($color) : set background color with dark mode.
* text($color) : set color with dark mode.
* set($color, $background: false) : set color on element with dark mode.
* without-dark($color, $background: false) : set color on element without dark mode.
* border($color) : set border-color with dark mode.
* caret($color) : set caret-color with dark mode.
* column-rule($color) : set column-rule-color with dark mode.
* outline($color) : set outline-color with dark mode.
* box-shadow($values, $color) : set box-shadow color with dark mode.
* text-shadow($values, $color) : set text-shadow color with dark mode.
### container
flex container
```scss
@use '@ubuilder/simple/styles/mixin/container';
```
* horizontal($fill: false, $wrap: false)
* vertical($fill: false, $wrap: false)
* centered
## Transitions
* fade added @7.1.7
* vertical added @7.1.7
* horizontal added @7.1.8
### usage
First parameter is transition duration. default to 2.5s.
Vertical's second parameter is max-height on transition end. default to 100vh, should adjust with actual element height.
```scss
@use '@ubuilder/simple/styles/mixin/transition';
li {
@include transition.fade(0.25s);
@include transition.horizontal(0.25s);
@include transition.vertical(0.25s, 100vh);
}
```